1
0
Fork 0
golang-github-meilisearch-m.../encoding_bench_test.go
Daniel Baumann 5d4914ed7f
Adding upstream version 0.31.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-18 21:42:39 +02:00

148 lines
3.2 KiB
Go

package meilisearch
import (
"bytes"
"encoding/json"
"testing"
)
func BenchmarkGzipEncoder(b *testing.B) {
encoder := newEncoding(GzipEncoding, DefaultCompression)
data := bytes.NewReader(make([]byte, 1024*1024)) // 1 MB of data
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
buf, err := encoder.Encode(data)
if err != nil {
b.Fatalf("Encode failed: %v", err)
}
_ = buf
}
}
func BenchmarkDeflateEncoder(b *testing.B) {
encoder := newEncoding(DeflateEncoding, DefaultCompression)
data := bytes.NewReader(make([]byte, 1024*1024)) // 1 MB of data
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
buf, err := encoder.Encode(data)
if err != nil {
b.Fatalf("Encode failed: %v", err)
}
_ = buf
}
}
func BenchmarkBrotliEncoder(b *testing.B) {
encoder := newEncoding(BrotliEncoding, DefaultCompression)
data := bytes.NewReader(make([]byte, 1024*1024)) // 1 MB of data
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
buf, err := encoder.Encode(data)
if err != nil {
b.Fatalf("Encode failed: %v", err)
}
_ = buf
}
}
func BenchmarkGzipDecoder(b *testing.B) {
encoder := newEncoding(GzipEncoding, DefaultCompression)
// Prepare a valid JSON input
data := map[string]interface{}{
"key1": "value1",
"key2": 12345,
"key3": []string{"item1", "item2", "item3"},
}
jsonData, err := json.Marshal(data)
if err != nil {
b.Fatalf("JSON marshal failed: %v", err)
}
// Encode the valid JSON data
input := bytes.NewReader(jsonData)
encoded, err := encoder.Encode(input)
if err != nil {
b.Fatalf("Encode failed: %v", err)
}
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
var result map[string]interface{}
if err := encoder.Decode(encoded.Bytes(), &result); err != nil {
b.Fatalf("Decode failed: %v", err)
}
}
}
func BenchmarkFlateDecoder(b *testing.B) {
encoder := newEncoding(DeflateEncoding, DefaultCompression)
// Prepare valid JSON input
data := map[string]interface{}{
"key1": "value1",
"key2": 12345,
"key3": []string{"item1", "item2", "item3"},
}
jsonData, err := json.Marshal(data)
if err != nil {
b.Fatalf("JSON marshal failed: %v", err)
}
// Encode the valid JSON data
input := bytes.NewReader(jsonData)
encoded, err := encoder.Encode(input)
if err != nil {
b.Fatalf("Encode failed: %v", err)
}
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
var result map[string]interface{}
if err := encoder.Decode(encoded.Bytes(), &result); err != nil {
b.Fatalf("Decode failed: %v", err)
}
}
}
func BenchmarkBrotliDecoder(b *testing.B) {
encoder := newEncoding(BrotliEncoding, DefaultCompression)
// Prepare valid JSON input
data := map[string]interface{}{
"key1": "value1",
"key2": 12345,
"key3": []string{"item1", "item2", "item3"},
}
jsonData, err := json.Marshal(data)
if err != nil {
b.Fatalf("JSON marshal failed: %v", err)
}
// Encode the valid JSON data
input := bytes.NewReader(jsonData)
encoded, err := encoder.Encode(input)
if err != nil {
b.Fatalf("Encode failed: %v", err)
}
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
var result map[string]interface{}
if err := encoder.Decode(encoded.Bytes(), &result); err != nil {
b.Fatalf("Decode failed: %v", err)
}
}
}