1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-06 12:03:50 +08:00
MiraiGo/binary/jce/reader_test.go
wdvxdr f4fca58809
feat(jce): optimize ReadSlice performance.
name                   old time/op    new time/op    delta
JceReader_ReadSlice-8    1.09ms ± 7%    0.52ms ± 1%   -52.48%  (p=0.000 n=10+10)

name                   old speed      new speed      delta
JceReader_ReadSlice-8  19.4MB/s ± 7%  40.8MB/s ± 1%  +110.25%  (p=0.000 n=10+10)

name                   old alloc/op   new alloc/op   delta
JceReader_ReadSlice-8     594kB ± 1%     266kB ± 0%   -55.22%  (p=0.000 n=9+9)

name                   old allocs/op  new allocs/op  delta
JceReader_ReadSlice-8     22.6k ± 0%     18.0k ± 0%   -19.98%  (p=0.000 n=10+10)
2021-08-12 20:45:45 +08:00

44 lines
777 B
Go

package jce
import (
"math/rand"
"testing"
"github.com/stretchr/testify/assert"
)
func TestJceReader_ReadSlice(t *testing.T) {
s := make([]int64, 50)
for i := range s {
s[i] = rand.Int63()
}
w := NewJceWriter()
w.WriteObject(s, 1)
r := NewJceReader(w.Bytes())
var result []int64
r.ReadSlice(&result, 1)
assert.Equal(t, s, result)
}
var test []*BigDataIPInfo
func BenchmarkJceReader_ReadSlice(b *testing.B) {
for i := 0; i <= 500; i++ {
test = append(test, &BigDataIPInfo{
Type: 1,
Server: "test1",
Port: 8080,
})
}
w := NewJceWriter()
w.WriteObject(test, 1)
src := w.Bytes()
b.SetBytes(int64(len(src)))
b.StartTimer()
var result = []BigDataIPInfo{}
for i := 0; i < b.N; i++ {
r := NewJceReader(src)
r.ReadSlice(&result, 1)
}
}