diff options
author | Eli Bendersky <eliben@golang.org> | 2023-06-15 09:34:22 -0700 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2023-06-15 16:58:05 +0000 |
commit | f6e0dcc4742ed413c1dacba28a60b919186e636d (patch) | |
tree | 779bf8a9fcee7b205fcdd90614274995b3050310 | |
parent | b7e74678657680a0eb31679623f90b539666c5f4 (diff) | |
download | go-f6e0dcc4742ed413c1dacba28a60b919186e636d.tar.gz go-f6e0dcc4742ed413c1dacba28a60b919186e636d.zip |
slices: add sort benchmark for sorted strings
For #60777
Change-Id: I424535ce6454156c61af2f299228630ee304d165
Reviewed-on: https://go-review.googlesource.com/c/go/+/503815
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Eli Bendersky <eliben@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Eli Bendersky <eliben@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
-rw-r--r-- | src/slices/sort_benchmark_test.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/slices/sort_benchmark_test.go b/src/slices/sort_benchmark_test.go index edf29994cf..0f08842594 100644 --- a/src/slices/sort_benchmark_test.go +++ b/src/slices/sort_benchmark_test.go @@ -8,6 +8,7 @@ import ( "fmt" "math/rand" "sort" + "strconv" "strings" "testing" ) @@ -50,6 +51,15 @@ func BenchmarkSortInts(b *testing.B) { } } +func makeSortedStrings(n int) []string { + x := make([]string, n) + for i := 0; i < n; i++ { + x[i] = strconv.Itoa(i) + } + Sort(x) + return x +} + func BenchmarkSlicesSortInts(b *testing.B) { for i := 0; i < b.N; i++ { b.StopTimer() @@ -153,6 +163,15 @@ func BenchmarkSortStrings(b *testing.B) { } } +func BenchmarkSortStrings_Sorted(b *testing.B) { + ss := makeSortedStrings(N) + b.ResetTimer() + + for i := 0; i < b.N; i++ { + sort.Strings(ss) + } +} + func BenchmarkSlicesSortStrings(b *testing.B) { for i := 0; i < b.N; i++ { b.StopTimer() @@ -162,6 +181,15 @@ func BenchmarkSlicesSortStrings(b *testing.B) { } } +func BenchmarkSlicesSortStrings_Sorted(b *testing.B) { + ss := makeSortedStrings(N) + b.ResetTimer() + + for i := 0; i < b.N; i++ { + Sort(ss) + } +} + // These benchmarks compare sorting a slice of structs with sort.Sort vs. // slices.SortFunc. type myStruct struct { |