81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
|
|
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)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|