mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-08-25 13:11:21 +02:00
add gob to binary benchmarks.
This commit is contained in:
@@ -7,16 +7,18 @@ goos: linux
|
|||||||
goarch: amd64
|
goarch: amd64
|
||||||
pkg: github.com/nbd-wtf/go-nostr/binary
|
pkg: github.com/nbd-wtf/go-nostr/binary
|
||||||
cpu: AMD Ryzen 3 3200G with Radeon Vega Graphics
|
cpu: AMD Ryzen 3 3200G with Radeon Vega Graphics
|
||||||
BenchmarkBinaryEncoding/easyjson.Marshal-4 24488 53274 ns/op 35191 B/op 102 allocs/op
|
BenchmarkBinaryEncoding/easyjson.Marshal-4 8283 153034 ns/op 95167 B/op 123 allocs/op
|
||||||
BenchmarkBinaryEncoding/binary.Marshal-4 5066 218284 ns/op 1282116 B/op 88 allocs/op
|
BenchmarkBinaryEncoding/gob.Encode-4 3601 299684 ns/op 407859 B/op 1491 allocs/op
|
||||||
BenchmarkBinaryEncoding/binary.MarshalBinary-4 5743 191603 ns/op 1277763 B/op 37 allocs/op
|
BenchmarkBinaryEncoding/binary.Marshal-4 4004 346269 ns/op 1476069 B/op 814 allocs/op
|
||||||
BenchmarkBinaryDecoding/easyjson.Unmarshal-4 32701 38647 ns/op 45832 B/op 124 allocs/op
|
BenchmarkBinaryEncoding/binary.MarshalBinary-4 3368 354479 ns/op 1471205 B/op 757 allocs/op
|
||||||
BenchmarkBinaryDecoding/binary.Unmarshal-4 85705 14249 ns/op 25488 B/op 141 allocs/op
|
BenchmarkBinaryDecoding/easyjson.Unmarshal-4 4684 253556 ns/op 257561 B/op 1584 allocs/op
|
||||||
BenchmarkBinaryDecoding/binary.UnmarshalBinary-4 213438 5451 ns/op 16784 B/op 39 allocs/op
|
BenchmarkBinaryDecoding/gob.Decode-4 1311 922829 ns/op 427914 B/op 7883 allocs/op
|
||||||
BenchmarkBinaryDecoding/easyjson.Unmarshal+sig-4 307 3971993 ns/op 131639 B/op 404 allocs/op
|
BenchmarkBinaryDecoding/binary.Unmarshal-4 13438 89201 ns/op 114576 B/op 1592 allocs/op
|
||||||
BenchmarkBinaryDecoding/binary.Unmarshal+sig-4 310 3924042 ns/op 111277 B/op 421 allocs/op
|
BenchmarkBinaryDecoding/binary.UnmarshalBinary-4 14200 84410 ns/op 104848 B/op 1478 allocs/op
|
||||||
|
BenchmarkBinaryDecoding/easyjson.Unmarshal+sig-4 259 4720044 ns/op 588309 B/op 1920 allocs/op
|
||||||
|
BenchmarkBinaryDecoding/binary.Unmarshal+sig-4 271 4514978 ns/op 445286 B/op 1928 allocs/op
|
||||||
PASS
|
PASS
|
||||||
ok github.com/nbd-wtf/go-nostr/binary 11.444s
|
ok github.com/nbd-wtf/go-nostr/binary 15.109s
|
||||||
```
|
```
|
||||||
|
|
||||||
This is 2~5x faster than [NSON](../nson) decoding, which means 8x faster than default easyjson decoding,
|
This is 2~5x faster than [NSON](../nson) decoding, which means 8x faster than default easyjson decoding,
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
package binary
|
package binary
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/gob"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -26,6 +28,16 @@ func BenchmarkBinaryEncoding(b *testing.B) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
b.Run("gob.Encode", func(b *testing.B) {
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
for _, evt := range events {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
gob.NewEncoder(&buf).Encode(evt)
|
||||||
|
_ = buf.Bytes()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
b.Run("binary.Marshal", func(b *testing.B) {
|
b.Run("binary.Marshal", func(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
for _, evt := range events {
|
for _, evt := range events {
|
||||||
@@ -45,11 +57,16 @@ func BenchmarkBinaryEncoding(b *testing.B) {
|
|||||||
|
|
||||||
func BenchmarkBinaryDecoding(b *testing.B) {
|
func BenchmarkBinaryDecoding(b *testing.B) {
|
||||||
events := make([][]byte, len(normalEvents))
|
events := make([][]byte, len(normalEvents))
|
||||||
|
gevents := make([][]byte, len(normalEvents))
|
||||||
for i, jevt := range normalEvents {
|
for i, jevt := range normalEvents {
|
||||||
evt := &nostr.Event{}
|
evt := &nostr.Event{}
|
||||||
json.Unmarshal([]byte(jevt), evt)
|
json.Unmarshal([]byte(jevt), evt)
|
||||||
bevt, _ := Marshal(evt)
|
bevt, _ := Marshal(evt)
|
||||||
events[i] = bevt
|
events[i] = bevt
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
gob.NewEncoder(&buf).Encode(evt)
|
||||||
|
gevents[i] = buf.Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
b.Run("easyjson.Unmarshal", func(b *testing.B) {
|
b.Run("easyjson.Unmarshal", func(b *testing.B) {
|
||||||
@@ -64,6 +81,17 @@ func BenchmarkBinaryDecoding(b *testing.B) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
b.Run("gob.Decode", func(b *testing.B) {
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
for _, gevt := range gevents {
|
||||||
|
evt := &nostr.Event{}
|
||||||
|
buf := bytes.NewBuffer(gevt)
|
||||||
|
evt = &nostr.Event{}
|
||||||
|
gob.NewDecoder(buf).Decode(evt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
b.Run("binary.Unmarshal", func(b *testing.B) {
|
b.Run("binary.Unmarshal", func(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
for _, bevt := range events {
|
for _, bevt := range events {
|
||||||
|
Reference in New Issue
Block a user