github.com/segmentio/parquet-go@v0.0.0-20230712180008-5d42db8f0d47/internal/bytealg/broadcast_test.go (about) 1 package bytealg_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/segmentio/parquet-go/internal/bytealg" 8 ) 9 10 func TestBroadcast(t *testing.T) { 11 const N = 100_0000 12 buffer := make([]byte, N) 13 14 for n := 1; n <= N; n = (n * 2) + 1 { 15 t.Run(fmt.Sprintf("size=%d", n), func(t *testing.T) { 16 b := buffer[:n] 17 18 for i := range b { 19 b[i] = 0 20 } 21 22 bytealg.Broadcast(b, 42) 23 24 for i, c := range b { 25 if c != 42 { 26 t.Fatalf("byte at index %d has value %d", i, c) 27 } 28 } 29 }) 30 } 31 } 32 33 func BenchmarkBroadcast(b *testing.B) { 34 for _, size := range []int{0, 10, 100, 1000, 10_000} { 35 b.Run(fmt.Sprintf("size=%d", size), func(b *testing.B) { 36 data := make([]byte, size) 37 38 for i := 0; i < b.N; i++ { 39 bytealg.Broadcast(data, 1) 40 } 41 42 b.SetBytes(int64(size)) 43 }) 44 } 45 }