From 84bd9a64645667902cb57a5cf5a59749810928cc Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Sun, 7 Dec 2025 09:55:47 +0100 Subject: [PATCH] common/embed: add a benchmark for reading from embed.zip This is slower, but it seems reasonable: ``` goos: linux goarch: amd64 pkg: akvorado/common/embed cpu: AMD Ryzen 5 5600X 6-Core Processor BenchmarkData/compressed-12 2262 526553 ns/op 610 B/op 10 allocs/op BenchmarkData/uncompressed-12 9482 123175 ns/op 0 B/op 0 allocs/op ``` --- common/embed/fs_test.go | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/common/embed/fs_test.go b/common/embed/fs_test.go index 0ca75a37..22992f0b 100644 --- a/common/embed/fs_test.go +++ b/common/embed/fs_test.go @@ -1,21 +1,26 @@ // SPDX-FileCopyrightText: 2025 Free Mobile // SPDX-License-Identifier: AGPL-3.0-only -package embed_test +package embed import ( + _ "embed" "io" "testing" - "akvorado/common/embed" "akvorado/common/helpers" ) func TestData(t *testing.T) { - f, err := embed.Data().Open("orchestrator/clickhouse/data/protocols.csv") + f, err := Data().Open("orchestrator/clickhouse/data/protocols.csv") if err != nil { t.Fatalf("Open() error:\n%+v", err) } + defer func() { + if err := f.Close(); err != nil { + t.Fatalf("Close() error:\n%+v", err) + } + }() expected := "proto,name,description" got := make([]byte, len(expected)) _, err = io.ReadFull(f, got) @@ -26,3 +31,21 @@ func TestData(t *testing.T) { t.Fatalf("ReadFull() (-got, +want):\n%s", diff) } } + +func BenchmarkData(b *testing.B) { + const amount = 64 * 1024 * 1024 + got := make([]byte, amount) + b.Run("compressed", func(b *testing.B) { + for b.Loop() { + f, _ := Data().Open("orchestrator/clickhouse/data/tcp.csv") + _, _ = io.ReadFull(f, got) + f.Close() + } + }) + b.Run("uncompressed", func(b *testing.B) { + for b.Loop() { + copy(got, embeddedZip) + } + }) + +}