Skip to content

Commit

Permalink
chore: add benchmark for encode and decode
Browse files Browse the repository at this point in the history
  • Loading branch information
Ja7ad committed Dec 25, 2024
1 parent dbc843a commit 12e4658
Showing 1 changed file with 148 additions and 0 deletions.
148 changes: 148 additions & 0 deletions encoding_bench_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
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)
}
}
}

0 comments on commit 12e4658

Please sign in to comment.