mirror of
https://github.com/golang/go
synced 2024-11-20 05:14:41 -07:00
unicode/utf8: make FullRune inlinable
This has same readability and allows to inline FullRune for massive performance gain: FullASCIIRune-6 4.36ns ± 0% 1.25ns ± 0% -71.33% (p=0.000 n=8+10) FullJapaneseRune-6 4.70ns ± 0% 1.42ns ± 1% -69.68% (p=0.000 n=9+10) Change-Id: I95edd6292417a28aac244e40afb713596a087d93 Reviewed-on: https://go-review.googlesource.com/63332 Run-TryBot: Ilya Tocar <ilya.tocar@intel.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
This commit is contained in:
parent
6d33df1d65
commit
6237ab2c31
@ -110,12 +110,10 @@ func FullRune(p []byte) bool {
|
|||||||
}
|
}
|
||||||
// Must be short or invalid.
|
// Must be short or invalid.
|
||||||
accept := acceptRanges[x>>4]
|
accept := acceptRanges[x>>4]
|
||||||
if n > 1 {
|
if n > 1 && (p[1] < accept.lo || accept.hi < p[1]) {
|
||||||
if c := p[1]; c < accept.lo || accept.hi < c {
|
return true
|
||||||
return true
|
} else if n > 2 && (p[2] < locb || hicb < p[2]) {
|
||||||
} else if n > 2 && (p[2] < locb || hicb < p[2]) {
|
return true
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -132,12 +130,10 @@ func FullRuneInString(s string) bool {
|
|||||||
}
|
}
|
||||||
// Must be short or invalid.
|
// Must be short or invalid.
|
||||||
accept := acceptRanges[x>>4]
|
accept := acceptRanges[x>>4]
|
||||||
if n > 1 {
|
if n > 1 && (s[1] < accept.lo || accept.hi < s[1]) {
|
||||||
if c := s[1]; c < accept.lo || accept.hi < c {
|
return true
|
||||||
return true
|
} else if n > 2 && (s[2] < locb || hicb < s[2]) {
|
||||||
} else if n > 2 && (s[2] < locb || hicb < s[2]) {
|
return true
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user