From 40377b127f620b1f5c6628e4286daf757fa8c4d7 Mon Sep 17 00:00:00 2001 From: Anton Sergeyev Date: Mon, 4 Apr 2022 16:52:49 +0600 Subject: [PATCH] =?UTF-8?q?=D0=B1=D0=B5=D0=BD=D1=87=D0=BC=D0=B0=D1=80?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exiv_test.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/exiv_test.go b/exiv_test.go index 90f1007..c2e8ee8 100644 --- a/exiv_test.go +++ b/exiv_test.go @@ -447,6 +447,52 @@ func Test_GetBytes_Goroutine(t *testing.T) { t.Logf("Allocated bytes after test: %+v\n", memStats.HeapAlloc) } +func BenchmarkImage_GetBytes_KeepAlive(b *testing.B) { + bytes, err := ioutil.ReadFile("testdata/stripped_pixel.jpg") + require.NoError(b, err) + var wg sync.WaitGroup + + for i := 0; i < b.N; i++ { + wg.Add(1) + go func() { + defer wg.Done() + + img, err := goexiv.OpenBytes(bytes) + require.NoError(b, err) + + runtime.GC() + + require.NoError(b, img.SetExifString("Exif.Photo.UserComment", "123")) + + bytesAfter := img.GetBytes() + assert.NotEmpty(b, bytesAfter) + runtime.KeepAlive(img) + }() + } + + wg.Wait() +} + +func BenchmarkImage_GetBytes_NoKeepAlive(b *testing.B) { + bytes, err := ioutil.ReadFile("testdata/stripped_pixel.jpg") + require.NoError(b, err) + var wg sync.WaitGroup + + for i := 0; i < b.N; i++ { + wg.Add(1) + go func() { + defer wg.Done() + img, err := goexiv.OpenBytes(bytes) + require.NoError(b, err) + + require.NoError(b, img.SetExifString("Exif.Photo.UserComment", "123")) + + bytesAfter := img.GetBytes() + assert.NotEmpty(b, bytesAfter) + }() + } +} + // Fills the image with metadata func initializeImage(path string, t *testing.T) { img, err := goexiv.Open(path)