aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Bendersky <eliben@golang.org>2023-06-15 09:34:22 -0700
committerEli Bendersky <eliben@google.com>2023-06-15 16:58:05 +0000
commitf6e0dcc4742ed413c1dacba28a60b919186e636d (patch)
tree779bf8a9fcee7b205fcdd90614274995b3050310
parentb7e74678657680a0eb31679623f90b539666c5f4 (diff)
downloadgo-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.go28
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 {