package stario import ( "io" "testing" ) func BenchmarkQueueBuildMessage64KiB(b *testing.B) { que := NewQueue() payload := make([]byte, 64*1024) b.ReportAllocs() b.SetBytes(int64(len(payload))) b.ResetTimer() for i := 0; i < b.N; i++ { _ = que.BuildMessage(payload) } } func BenchmarkQueueWriteFrame64KiB(b *testing.B) { que := NewQueue() payload := make([]byte, 64*1024) b.ReportAllocs() b.SetBytes(int64(len(payload))) b.ResetTimer() for i := 0; i < b.N; i++ { if err := que.WriteFrame(io.Discard, payload); err != nil { b.Fatalf("WriteFrame failed: %v", err) } } } func BenchmarkQueueWriteFrameBuffers64KiB(b *testing.B) { que := NewQueue() payload := make([]byte, 64*1024) b.ReportAllocs() b.SetBytes(int64(len(payload))) b.ResetTimer() for i := 0; i < b.N; i++ { if err := que.WriteFrameBuffers(io.Discard, payload); err != nil { b.Fatalf("WriteFrameBuffers failed: %v", err) } } } func BenchmarkQueueWriteFramesBuffers4x64KiB(b *testing.B) { que := NewQueue() payloads := [][]byte{ make([]byte, 64*1024), make([]byte, 64*1024), make([]byte, 64*1024), make([]byte, 64*1024), } b.ReportAllocs() b.SetBytes(int64(len(payloads) * len(payloads[0]))) b.ResetTimer() for i := 0; i < b.N; i++ { if err := que.WriteFramesBuffers(io.Discard, payloads...); err != nil { b.Fatalf("WriteFramesBuffers failed: %v", err) } } } func BenchmarkQueueParseRestoreHello(b *testing.B) { que := NewQueueWithCount(1) frame := que.BuildMessage([]byte("hello")) if len(frame) == 0 { b.Fatal("BuildMessage returned empty frame") } b.ReportAllocs() b.SetBytes(int64(len(frame))) b.ResetTimer() for i := 0; i < b.N; i++ { if err := que.ParseMessage(frame, "bench"); err != nil { b.Fatal(err) } if _, err := que.Restore(); err != nil { b.Fatal(err) } } }