• Ingo Oeser's avatar
    html: speed up UnescapeString · 5b920281
    Ingo Oeser authored
    Add benchmarks for for sparsely escaped and densely escaped strings.
    Then speed up the sparse unescaping part heavily by using IndexByte and
    copy to skip the parts containing no escaping very fast.
    
    Unescaping densely escaped strings slower because of
    the new function call overhead. But sparsely encoded strings are seen
    more often in the utf8 enabled web.
    
    We win part of the speed back by looking up entityName differently.
    
    	benchmark                  old ns/op    new ns/op    delta
    	BenchmarkEscape                31680        31396   -0.90%
    	BenchmarkEscapeNone             6507         6872   +5.61%
    	BenchmarkUnescape              36481        48298  +32.39%
    	BenchmarkUnescapeNone            332          325   -2.11%
    	BenchmarkUnescapeSparse         8836         3221  -63.55%
    	BenchmarkUnescapeDense         30639        32224   +5.17%
    
    Change-Id: If606cb01897a40eefe35ba98f2ff23bb25251606
    Reviewed-on: https://go-review.googlesource.com/10172Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    5b920281
escape_test.go 3.26 KB