]> Cypherpunks.ru repositories - gostls13.git/commitdiff
unicode/utf8: make FullRune inlinable
authorIlya Tocar <ilya.tocar@intel.com>
Tue, 12 Sep 2017 19:23:09 +0000 (14:23 -0500)
committerIlya Tocar <ilya.tocar@intel.com>
Tue, 12 Sep 2017 20:18:53 +0000 (20:18 +0000)
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>
src/unicode/utf8/utf8.go

index 6ccd46437382bf8322c8cf99153a9341670d4535..db845ab2f2d321822d029ba2495f1b727232d544 100644 (file)
@@ -110,12 +110,10 @@ func FullRune(p []byte) bool {
        }
        // Must be short or invalid.
        accept := acceptRanges[x>>4]
-       if n > 1 {
-               if c := p[1]; c < accept.lo || accept.hi < c {
-                       return true
-               } else if n > 2 && (p[2] < locb || hicb < p[2]) {
-                       return true
-               }
+       if n > 1 && (p[1] < accept.lo || accept.hi < p[1]) {
+               return true
+       } else if n > 2 && (p[2] < locb || hicb < p[2]) {
+               return true
        }
        return false
 }
@@ -132,12 +130,10 @@ func FullRuneInString(s string) bool {
        }
        // Must be short or invalid.
        accept := acceptRanges[x>>4]
-       if n > 1 {
-               if c := s[1]; c < accept.lo || accept.hi < c {
-                       return true
-               } else if n > 2 && (s[2] < locb || hicb < s[2]) {
-                       return true
-               }
+       if n > 1 && (s[1] < accept.lo || accept.hi < s[1]) {
+               return true
+       } else if n > 2 && (s[2] < locb || hicb < s[2]) {
+               return true
        }
        return false
 }