github.com/MetalBlockchain/metalgo@v1.11.9/utils/formatting/encoding_benchmark_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package formatting 5 6 import ( 7 "fmt" 8 "math/rand" 9 "testing" 10 11 "github.com/stretchr/testify/require" 12 13 "github.com/MetalBlockchain/metalgo/utils/units" 14 ) 15 16 func BenchmarkEncodings(b *testing.B) { 17 benchmarks := []struct { 18 encoding Encoding 19 size int 20 }{ 21 { 22 encoding: Hex, 23 size: 1 * units.KiB, // 1kb 24 }, 25 { 26 encoding: Hex, 27 size: 4 * units.KiB, // 4kb 28 }, 29 { 30 encoding: Hex, 31 size: 32 * units.KiB, // 32kb 32 }, 33 { 34 encoding: Hex, 35 size: 128 * units.KiB, // 128kb 36 }, 37 { 38 encoding: Hex, 39 size: 256 * units.KiB, // 256kb 40 }, 41 { 42 encoding: Hex, 43 size: 512 * units.KiB, // 512kb 44 }, 45 { 46 encoding: Hex, 47 size: 1 * units.MiB, // 1mb 48 }, 49 { 50 encoding: Hex, 51 size: 2 * units.MiB, // 2mb 52 }, 53 { 54 encoding: Hex, 55 size: 4 * units.MiB, // 4mb 56 }, 57 } 58 for _, benchmark := range benchmarks { 59 bytes := make([]byte, benchmark.size) 60 _, _ = rand.Read(bytes) // #nosec G404 61 b.Run(fmt.Sprintf("%s-%d bytes", benchmark.encoding, benchmark.size), func(b *testing.B) { 62 for n := 0; n < b.N; n++ { 63 _, err := Encode(benchmark.encoding, bytes) 64 require.NoError(b, err) 65 } 66 }) 67 } 68 }