Skip to content

Commit 41124a6

Browse files
committed
Make sure benchmarks reuse memory
1 parent 19d624d commit 41124a6

File tree

1 file changed

+40
-20
lines changed

1 file changed

+40
-20
lines changed

s2/s2_test.go

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1388,11 +1388,13 @@ func testSnappyDecode(t *testing.T, src []byte) {
13881388
func benchDecode(b *testing.B, src []byte) {
13891389
b.Run("default", func(b *testing.B) {
13901390
encoded := Encode(nil, src)
1391+
buf := make([]byte, 0, len(src))
13911392
b.SetBytes(int64(len(src)))
13921393
b.ReportAllocs()
13931394
b.ResetTimer()
1395+
var err error
13941396
for i := 0; i < b.N; i++ {
1395-
_, err := Decode(src[:0], encoded)
1397+
buf, err = Decode(buf[:0], encoded)
13961398
if err != nil {
13971399
b.Fatal(err)
13981400
}
@@ -1401,11 +1403,13 @@ func benchDecode(b *testing.B, src []byte) {
14011403
})
14021404
b.Run("better", func(b *testing.B) {
14031405
encoded := EncodeBetter(nil, src)
1406+
buf := make([]byte, 0, len(src))
14041407
b.SetBytes(int64(len(src)))
14051408
b.ReportAllocs()
14061409
b.ResetTimer()
1410+
var err error
14071411
for i := 0; i < b.N; i++ {
1408-
_, err := Decode(src[:0], encoded)
1412+
buf, err = Decode(buf[:0], encoded)
14091413
if err != nil {
14101414
b.Fatal(err)
14111415
}
@@ -1414,11 +1418,13 @@ func benchDecode(b *testing.B, src []byte) {
14141418
})
14151419
b.Run("best", func(b *testing.B) {
14161420
encoded := EncodeBest(nil, src)
1421+
buf := make([]byte, 0, len(src))
14171422
b.SetBytes(int64(len(src)))
14181423
b.ReportAllocs()
14191424
b.ResetTimer()
1425+
var err error
14201426
for i := 0; i < b.N; i++ {
1421-
_, err := Decode(src[:0], encoded)
1427+
buf, err = Decode(buf[:0], encoded)
14221428
if err != nil {
14231429
b.Fatal(err)
14241430
}
@@ -1427,11 +1433,13 @@ func benchDecode(b *testing.B, src []byte) {
14271433
})
14281434
b.Run("snappy-input", func(b *testing.B) {
14291435
encoded := snapref.Encode(nil, src)
1436+
buf := make([]byte, 0, len(src))
14301437
b.SetBytes(int64(len(src)))
14311438
b.ReportAllocs()
14321439
b.ResetTimer()
1440+
var err error
14331441
for i := 0; i < b.N; i++ {
1434-
_, err := Decode(src[:0], encoded)
1442+
buf, err = Decode(buf[:0], encoded)
14351443
if err != nil {
14361444
b.Fatal(err)
14371445
}
@@ -1442,63 +1450,75 @@ func benchDecode(b *testing.B, src []byte) {
14421450

14431451
func benchEncode(b *testing.B, src []byte) {
14441452
// Bandwidth is in amount of uncompressed data.
1445-
dst := make([]byte, snapref.MaxEncodedLen(len(src)))
1446-
b.ResetTimer()
14471453
b.Run("default", func(b *testing.B) {
1454+
dst := make([]byte, MaxEncodedLen(len(src)))
1455+
b.ResetTimer()
14481456
b.SetBytes(int64(len(src)))
14491457
b.ReportAllocs()
14501458
for i := 0; i < b.N; i++ {
1451-
Encode(dst, src)
1459+
dst = Encode(dst[:0], src)
14521460
}
1453-
b.ReportMetric(100*float64(len(Encode(dst, src)))/float64(len(src)), "pct")
1461+
b.ReportMetric(100*float64(len(dst))/float64(len(src)), "pct")
14541462
})
14551463
b.Run("better", func(b *testing.B) {
1464+
dst := make([]byte, MaxEncodedLen(len(src)))
1465+
b.ResetTimer()
14561466
b.SetBytes(int64(len(src)))
14571467
b.ReportAllocs()
14581468
for i := 0; i < b.N; i++ {
1459-
EncodeBetter(dst, src)
1469+
dst = EncodeBetter(dst[:0], src)
14601470
}
1461-
b.ReportMetric(100*float64(len(EncodeBetter(dst, src)))/float64(len(src)), "pct")
1471+
b.ReportMetric(100*float64(len(dst))/float64(len(src)), "pct")
14621472
})
14631473
b.Run("best", func(b *testing.B) {
1474+
dst := make([]byte, MaxEncodedLen(len(src)))
1475+
b.ResetTimer()
14641476
b.SetBytes(int64(len(src)))
14651477
b.ReportAllocs()
14661478
for i := 0; i < b.N; i++ {
1467-
EncodeBest(dst, src)
1479+
dst = EncodeBest(dst[:0], src)
14681480
}
1469-
b.ReportMetric(100*float64(len(EncodeBest(dst, src)))/float64(len(src)), "pct")
1481+
b.ReportMetric(100*float64(len(dst))/float64(len(src)), "pct")
14701482
})
14711483
b.Run("snappy-default", func(b *testing.B) {
1484+
dst := make([]byte, MaxEncodedLen(len(src)))
14721485
b.SetBytes(int64(len(src)))
14731486
b.ReportAllocs()
1487+
b.ResetTimer()
14741488
for i := 0; i < b.N; i++ {
1475-
EncodeSnappy(dst, src)
1489+
dst = EncodeSnappy(dst[:0], src)
14761490
}
1477-
b.ReportMetric(100*float64(len(EncodeSnappy(dst, src)))/float64(len(src)), "pct")
1491+
b.ReportMetric(100*float64(len(dst))/float64(len(src)), "pct")
14781492
})
14791493
b.Run("snappy-better", func(b *testing.B) {
1494+
dst := make([]byte, MaxEncodedLen(len(src)))
14801495
b.SetBytes(int64(len(src)))
14811496
b.ReportAllocs()
1497+
b.ResetTimer()
14821498
for i := 0; i < b.N; i++ {
1483-
EncodeSnappyBetter(dst, src)
1499+
dst = EncodeSnappyBetter(dst[:0], src)
14841500
}
1485-
b.ReportMetric(100*float64(len(EncodeSnappyBetter(dst, src)))/float64(len(src)), "pct")
1501+
b.ReportMetric(100*float64(len(dst))/float64(len(src)), "pct")
14861502
})
14871503
b.Run("snappy-best", func(b *testing.B) {
1504+
dst := make([]byte, MaxEncodedLen(len(src)))
14881505
b.SetBytes(int64(len(src)))
14891506
b.ReportAllocs()
1507+
b.ResetTimer()
14901508
for i := 0; i < b.N; i++ {
1491-
EncodeSnappyBest(dst, src)
1509+
dst = EncodeSnappyBest(dst[:0], src)
14921510
}
1493-
b.ReportMetric(100*float64(len(EncodeSnappyBest(dst, src)))/float64(len(src)), "pct")
1511+
b.ReportMetric(100*float64(len(dst))/float64(len(src)), "pct")
14941512
})
14951513
b.Run("snappy-ref-noasm", func(b *testing.B) {
1514+
dst := make([]byte, snapref.MaxEncodedLen(len(src)))
14961515
b.SetBytes(int64(len(src)))
14971516
b.ReportAllocs()
1517+
b.ResetTimer()
14981518
for i := 0; i < b.N; i++ {
1499-
snapref.Encode(dst, src)
1519+
dst = snapref.Encode(dst[:0], src)
15001520
}
1501-
b.ReportMetric(100*float64(len(snapref.Encode(dst, src)))/float64(len(src)), "pct")
1521+
b.ReportMetric(100*float64(len(dst))/float64(len(src)), "pct")
15021522
})
15031523
}
15041524

0 commit comments

Comments
 (0)