From: Brad Fitzpatrick Date: Mon, 6 Oct 2014 22:10:51 +0000 (-0700) Subject: strings: use fast path for IndexRune X-Git-Tag: go1.4beta1~181 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4731c382f6875863dc27f33088f53bce8f82c620;p=gostls13.git strings: use fast path for IndexRune Noticed while reviewing https://golang.org/cl/147690043/ I'd never seen anybody use IndexRune before, and unsurprisingly it doesn't use the other fast paths in the strings/bytes packages. IndexByte uses assembly. Also, less code this way. LGTM=r R=r CC=golang-codereviews https://golang.org/cl/147700043 --- diff --git a/src/strings/strings.go b/src/strings/strings.go index 1b9df2e757..27d384983e 100644 --- a/src/strings/strings.go +++ b/src/strings/strings.go @@ -225,13 +225,8 @@ func LastIndex(s, sep string) int { // r, or -1 if rune is not present in s. func IndexRune(s string, r rune) int { switch { - case r < 0x80: - b := byte(r) - for i := 0; i < len(s); i++ { - if s[i] == b { - return i - } - } + case r < utf8.RuneSelf: + return IndexByte(s, byte(r)) default: for i, c := range s { if c == r {