Skip to content

Commit 885fdfc

Browse files
apocelipesgopherbot
authored andcommitted
expvar: use slices to simplify the code
No effect on benchmarks. Change-Id: I7454c21b25d5e44b9c4a39922ed470522f81872d GitHub-Last-Rev: 5801b30 GitHub-Pull-Request: #66660 Reviewed-on: https://go-review.googlesource.com/c/go/+/575777 Reviewed-by: Keith Randall <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]> Reviewed-by: Keith Randall <[email protected]> Auto-Submit: Ian Lance Taylor <[email protected]>
1 parent 61a3ee5 commit 885fdfc

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

src/expvar/expvar.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
"net/http"
3131
"os"
3232
"runtime"
33-
"sort"
33+
"slices"
3434
"strconv"
3535
"sync"
3636
"sync/atomic"
@@ -181,13 +181,11 @@ func (v *Map) addKey(key string) {
181181
v.keysMu.Lock()
182182
defer v.keysMu.Unlock()
183183
// Using insertion sort to place key into the already-sorted v.keys.
184-
if i := sort.SearchStrings(v.keys, key); i >= len(v.keys) {
185-
v.keys = append(v.keys, key)
186-
} else if v.keys[i] != key {
187-
v.keys = append(v.keys, "")
188-
copy(v.keys[i+1:], v.keys[i:])
189-
v.keys[i] = key
184+
i, found := slices.BinarySearch(v.keys, key)
185+
if found {
186+
return
190187
}
188+
v.keys = slices.Insert(v.keys, i, key)
191189
}
192190

193191
func (v *Map) Get(key string) Var {
@@ -248,10 +246,9 @@ func (v *Map) AddFloat(key string, delta float64) {
248246
func (v *Map) Delete(key string) {
249247
v.keysMu.Lock()
250248
defer v.keysMu.Unlock()
251-
i := sort.SearchStrings(v.keys, key)
252-
if i < len(v.keys) && key == v.keys[i] {
253-
v.keys = append(v.keys[:i], v.keys[i+1:]...)
254-
v.m.Delete(key)
249+
i, found := slices.BinarySearch(v.keys, key)
250+
if found {
251+
v.keys = slices.Delete(v.keys, i, i+1)
255252
}
256253
}
257254

@@ -318,7 +315,7 @@ func Publish(name string, v Var) {
318315
vars.keysMu.Lock()
319316
defer vars.keysMu.Unlock()
320317
vars.keys = append(vars.keys, name)
321-
sort.Strings(vars.keys)
318+
slices.Sort(vars.keys)
322319
}
323320

324321
// Get retrieves a named exported variable. It returns nil if the name has

0 commit comments

Comments
 (0)