• Joe Tsai's avatar
    unicode/utf8: optimize ValidRune · 8eca0861
    Joe Tsai authored
    Re-writing the switch statement as a single boolean expression
    reduces the number of branches that the compiler generates.
    It is also arguably easier to read as a pair of numeric ranges
    that valid runes can exist in.
    
    No test changes since the existing test does a good job of
    testing all of the boundaries.
    
    This change was to gain back some performance after a correctness
    fix done in http://golang.org/cl/32123.
    
    The correctness fix (CL/32123) slowed down the benchmarks slightly:
    	benchmark                   old ns/op     new ns/op     delta
    	BenchmarkIndexRune/10-4     19.3          21.6          +11.92%
    	BenchmarkIndexRune/32-4     33.6          35.2          +4.76%
    
    Since the fix relies on utf8.ValidRune, this CL improves benchmarks:
    	benchmark                   old ns/op     new ns/op     delta
    	BenchmarkIndexRune/10-4     21.6          20.0          -7.41%
    	BenchmarkIndexRune/32-4     35.2          33.5          -4.83%
    
    Change-Id: Ib1ca10a2e29c90e879a8ef9b7221c33e85d015d8
    Reviewed-on: https://go-review.googlesource.com/32122
    Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    8eca0861
Name
Last commit
Last update
..
utf16 Loading commit data...
utf8 Loading commit data...
casetables.go Loading commit data...
digit.go Loading commit data...
digit_test.go Loading commit data...
example_test.go Loading commit data...
graphic.go Loading commit data...
graphic_test.go Loading commit data...
letter.go Loading commit data...
letter_test.go Loading commit data...
maketables.go Loading commit data...
script_test.go Loading commit data...
tables.go Loading commit data...