• Rui Ueyama's avatar
    strings: add fast path to Replace · 14950d89
    Rui Ueyama authored
    genericReplacer.lookup is called for each byte of an input
    string. In many (most?) cases, lookup will fail for the first
    byte, and it will return immediately. Adding a fast path for
    that case seems worth it.
    
    Benchmark on my Xeon 3.5GHz Linux box:
    
    benchmark                        old ns/op    new ns/op    delta
    BenchmarkGenericNoMatch               2691          774  -71.24%
    BenchmarkGenericMatch1                7920         8151   +2.92%
    BenchmarkGenericMatch2               52336        39927  -23.71%
    BenchmarkSingleMaxSkipping            1575         1575   +0.00%
    BenchmarkSingleLongSuffixFail         1429         1429   +0.00%
    BenchmarkSingleMatch                 56228        55444   -1.39%
    BenchmarkByteByteNoMatch               568          568   +0.00%
    BenchmarkByteByteMatch                 977          972   -0.51%
    BenchmarkByteStringMatch              1669         1687   +1.08%
    BenchmarkHTMLEscapeNew                 422          422   +0.00%
    BenchmarkHTMLEscapeOld                 692          670   -3.18%
    BenchmarkByteByteReplaces             8492         8474   -0.21%
    BenchmarkByteByteMap                  2817         2808   -0.32%
    
    LGTM=rsc
    R=golang-codereviews, bradfitz, dave, rsc
    CC=golang-codereviews
    https://golang.org/cl/79200044
    14950d89
Name
Last commit
Last update
api Loading commit data...
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...