]> Cypherpunks repositories - gostls13.git/commitdiff
go/token: match the implementation of index selection with sort.Search
authorsubham sarkar <sarkar.subhams2@gmail.com>
Tue, 20 Jul 2021 17:17:14 +0000 (17:17 +0000)
committerRobert Griesemer <gri@golang.org>
Tue, 24 Aug 2021 15:52:22 +0000 (15:52 +0000)
name          old time/op    new time/op    delta
SearchInts-8    15.5ns ± 2%    13.7ns ± 4%  -11.87%  (p=0.008 n=5+5)

(see CL 36332 for the original change to sort.Search)

Change-Id: If452818185b92b8b3548b066f475e493d604ea29
GitHub-Last-Rev: 32dd3cffa6b54b332948ac6a2929458defd4838f
GitHub-Pull-Request: golang/go#47293
Reviewed-on: https://go-review.googlesource.com/c/go/+/335809
Reviewed-by: Robert Griesemer <gri@golang.org>
Trust: Robert Griesemer <gri@golang.org>
Trust: Than McIntosh <thanm@google.com>

src/go/token/position.go

index 0d7982c67059374be2c291fd3bd312b7a3e950d8..ce4af039237ce6f3cb12005e8f34fe8430ad04a5 100644 (file)
@@ -540,7 +540,7 @@ func searchInts(a []int, x int) int {
        // TODO(gri): Remove this when compilers have caught up.
        i, j := 0, len(a)
        for i < j {
-               h := i + (j-i)>>1 // avoid overflow when computing h
+               h := int(uint(i+j) >> 1) // avoid overflow when computing h
                // i ≤ h < j
                if a[h] <= x {
                        i = h + 1