Add benchmark

This commit is contained in:
Milan Nikolic
2025-06-13 17:58:10 +02:00
parent e01c80ca67
commit 84135f3304
5 changed files with 55 additions and 26 deletions

View File

@@ -2,11 +2,11 @@ package camera
import (
"fmt"
"image/jpeg"
"os"
"path/filepath"
"io"
"testing"
"time"
"github.com/gen2brain/cam2ip/image"
)
func TestCamera(t *testing.T) {
@@ -15,16 +15,14 @@ func TestCamera(t *testing.T) {
t.Fatal(err)
}
defer camera.Close()
defer func(camera *Camera) {
err := camera.Close()
if err != nil {
t.Error(err)
}
}(camera)
tmpdir, err := os.MkdirTemp(os.TempDir(), "cam2ip*")
if err != nil {
t.Error(err)
}
defer os.RemoveAll(tmpdir)
var i int64
var i int
var n = 10
timeout := time.After(time.Duration(n) * time.Second)
@@ -32,7 +30,7 @@ func TestCamera(t *testing.T) {
for {
select {
case <-timeout:
//fmt.Printf("Fps: %d\n", i/n)
fmt.Printf("FPS: %.2f\n", float64(i)/float64(n))
return
default:
i += 1
@@ -42,17 +40,7 @@ func TestCamera(t *testing.T) {
t.Error(err)
}
file, err := os.Create(filepath.Join(tmpdir, fmt.Sprintf("%03d.jpg", i)))
if err != nil {
t.Error(err)
}
err = jpeg.Encode(file, img, &jpeg.Options{Quality: 75})
if err != nil {
t.Error(err)
}
err = file.Close()
err = image.NewEncoder(io.Discard).Encode(img)
if err != nil {
t.Error(err)
}

View File

@@ -1,5 +1,4 @@
//go:build !amd64
// +build !amd64
package image

View File

@@ -1,5 +1,4 @@
//go:build amd64
// +build amd64
package image

43
image/image_test.go Normal file
View File

@@ -0,0 +1,43 @@
package image_test
import (
"bytes"
_ "embed"
"image/jpeg"
"io"
"testing"
"github.com/gen2brain/cam2ip/image"
)
//go:embed testdata/test.jpg
var testJpg []byte
func BenchmarkDecode(b *testing.B) {
for i := 0; i < b.N; i++ {
_, err := image.NewDecoder(bytes.NewReader(testJpg)).Decode()
if err != nil {
b.Fatal(err)
}
}
}
func BenchmarkEncode(b *testing.B) {
img, err := jpeg.Decode(bytes.NewReader(testJpg))
if err != nil {
b.Fatal(err)
}
for i := 0; i < b.N; i++ {
err := image.NewEncoder(io.Discard).Encode(img)
if err != nil {
b.Fatal(err)
}
}
}
func BenchmarkBase64(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = image.EncodeToString(testJpg)
}
}

BIN
image/testdata/test.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB