1
0
mirror of https://github.com/golang/go synced 2024-11-26 18:26:48 -07:00

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
This commit is contained in:
Brad Fitzpatrick 2014-10-06 15:10:51 -07:00
parent f8f95590d9
commit 4731c382f6

View File

@ -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 {