diff options
| author | Shulhan <ms@kilabit.info> | 2025-01-25 17:17:11 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2025-01-25 17:17:11 +0700 |
| commit | 3cd177b99e6505bcf1127adfafec7fa0adf714af (patch) | |
| tree | 55d7e5a40421cbeec946b6c57dc72e6308688e49 | |
| parent | 2a0694d2fa577574b505c4635eb8a824eaf88ddc (diff) | |
| download | pakakeh.go-3cd177b99e6505bcf1127adfafec7fa0adf714af.tar.xz | |
lib/slices: copy the random test data on each run
Since the "sorts.Ints", "IndirectSort", and "InplaceMergesort" store the
sorted value in-place, it is incorrect to run the sort again using the
same slice, the second run will use sorted input.
While at it, call ResetTime in testing InplaceMergesort for float64.
| -rw-r--r-- | lib/slices/benchmark_test.go | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/lib/slices/benchmark_test.go b/lib/slices/benchmark_test.go index 5bbde4e4..2b7f4576 100644 --- a/lib/slices/benchmark_test.go +++ b/lib/slices/benchmark_test.go @@ -17,36 +17,32 @@ func BenchmarkSort_int(b *testing.B) { var data = make([]int, n) generateRandomInts(data, n) - var dataIndirect = make([]int, n) - copy(dataIndirect, data) - - var dataInplaceMergesort = make([]int, n) + var dataUnsorted = make([]int, n) var inplaceIdx = make([]int, n) - copy(dataInplaceMergesort, data) - var dataSortInts = make([]int, n) - copy(dataSortInts, data) b.ResetTimer() b.Run(`sort.Ints`, func(b *testing.B) { for x := 0; x < b.N; x++ { - sort.Ints(dataSortInts) + copy(dataUnsorted, data) + sort.Ints(dataUnsorted) } }) b.Run(`IndirectSort`, func(b *testing.B) { for x := 0; x < b.N; x++ { - slices.IndirectSort(dataIndirect, true) + copy(dataUnsorted, data) + slices.IndirectSort(dataUnsorted, true) } }) b.Run(`InplaceMergesort`, func(b *testing.B) { for x := 0; x < b.N; x++ { - slices.InplaceMergesort(dataInplaceMergesort, + copy(dataUnsorted, data) + slices.InplaceMergesort(dataUnsorted, inplaceIdx, 0, n, true) } }) - } func BenchmarkInplaceMergesort_float64(b *testing.B) { @@ -65,7 +61,7 @@ func BenchmarkInplaceMergesort_float64(b *testing.B) { } var size = len(slice) var ids = make([]int, size) - + b.ResetTimer() for i := 0; i < b.N; i++ { slices.InplaceMergesort(slice, ids, 0, size, true) } |
