some fixes to sonic and make it faster by reusing arrays.

BenchmarkParseMessage/relay/jsonstdlib-4              216   5651451 ns/op
BenchmarkParseMessage/relay/easyjson-4                313   3703457 ns/op
BenchmarkParseMessage/relay/simdjson-4                469   2606309 ns/op
BenchmarkParseMessage/relay/sonic-4                   966   1268594 ns/op

BenchmarkParseMessage/client/jsonstdlib-4             216   5524239 ns/op
BenchmarkParseMessage/client/easyjson-4               422   2756370 ns/op
BenchmarkParseMessage/client/simdjson-4               519   2298477 ns/op
BenchmarkParseMessage/client/sonic-4                  644   1860583 ns/op
This commit is contained in:
fiatjaf
2025-03-07 15:38:20 -03:00
parent 39bde22639
commit 8d7e854779
3 changed files with 248 additions and 171 deletions

View File

@@ -42,9 +42,10 @@ func BenchmarkParseMessage(b *testing.B) {
})
b.Run("sonic", func(b *testing.B) {
smp := NewSonicMessageParser()
for i := 0; i < b.N; i++ {
for _, msg := range messages {
_, _ = ParseMessageSonic(msg)
_, _ = smp.ParseMessage(msg)
}
}
})
@@ -57,7 +58,7 @@ func generateTestMessages(typ string) [][]byte {
setup := map[string]map[int]func() []byte{
"client": {
500: generateEventMessage,
600: generateEventMessage,
5: generateEOSEMessage,
9: generateNoticeMessage,
14: generateCountMessage,
@@ -65,6 +66,7 @@ func generateTestMessages(typ string) [][]byte {
},
"relay": {
500: generateReqMessage,
50: generateEventMessage,
10: generateCountMessage,
},
}[typ]