diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-11 22:33:44 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-12 16:17:27 -0700 |
commit | acbbfafa07922b458506b91a58f3a082da453fd1 (patch) | |
tree | 020cb033adb3809bcc8ffed5f56ba8d167b32dd1 /lib/btrfs/btrfssum | |
parent | 1f3a1a474ac41f427e4c5b0d27d2c85a3cfaa65e (diff) |
Try to avoid unnecessary allocations in enum-types' String methods
Diffstat (limited to 'lib/btrfs/btrfssum')
-rw-r--r-- | lib/btrfs/btrfssum/csum.go | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/lib/btrfs/btrfssum/csum.go b/lib/btrfs/btrfssum/csum.go index bce43f9..157371e 100644 --- a/lib/btrfs/btrfssum/csum.go +++ b/lib/btrfs/btrfssum/csum.go @@ -58,29 +58,30 @@ const ( TYPE_BLAKE2 ) +var csumTypeNames = []string{ + "crc32c", + "xxhash64", + "sha256", + "blake2", +} + +var csumTypeSizes = []int{ + 4, + 8, + 32, + 32, +} + func (typ CSumType) String() string { - names := map[CSumType]string{ - TYPE_CRC32: "crc32c", - TYPE_XXHASH: "xxhash64", - TYPE_SHA256: "sha256", - TYPE_BLAKE2: "blake2", - } - if name, ok := names[typ]; ok { - return name + if int(typ) < len(csumTypeNames) { + return csumTypeNames[typ] } return fmt.Sprintf("%d", typ) } func (typ CSumType) Size() int { - //nolint:gomnd // This is where we define the magic numbers. - sizes := map[CSumType]int{ - TYPE_CRC32: 4, - TYPE_XXHASH: 8, - TYPE_SHA256: 32, - TYPE_BLAKE2: 32, - } - if size, ok := sizes[typ]; ok { - return size + if int(typ) < len(csumTypeSizes) { + return csumTypeSizes[typ] } return len(CSum{}) } |