]> Cypherpunks repositories - gostls13.git/commit
exp/html/atom: new package.
authorNigel Tao <nigeltao@golang.org>
Thu, 31 May 2012 05:37:18 +0000 (15:37 +1000)
committerNigel Tao <nigeltao@golang.org>
Thu, 31 May 2012 05:37:18 +0000 (15:37 +1000)
commitbb4a817a923f9a0ea59bbaec84e11b924e568442
tree3106fe04db4459a6a4f45bc213ef7d605e1b06ba
parent43cf5505fcc3cdf4d02a4970af0b8a441ac274ef
exp/html/atom: new package.

50% fewer mallocs in HTML tokenization, resulting in 25% fewer mallocs
in parsing go1.html.

Making the parser use integer comparisons instead of string comparisons
will be a follow-up CL, to be co-ordinated with Andy Balholm's work.

exp/html benchmarks before/after:

BenchmarkParser      500    4754294 ns/op   16.44 MB/s
        parse_test.go:409: 500 iterations, 14651 mallocs per iteration
BenchmarkRawLevelTokenizer     2000     903481 ns/op   86.51 MB/s
        token_test.go:678: 2000 iterations, 28 mallocs per iteration
BenchmarkLowLevelTokenizer     2000    1260485 ns/op   62.01 MB/s
        token_test.go:678: 2000 iterations, 41 mallocs per iteration
BenchmarkHighLevelTokenizer     1000    2165964 ns/op   36.09 MB/s
        token_test.go:678: 1000 iterations, 6616 mallocs per iteration

BenchmarkParser      500    4664912 ns/op   16.76 MB/s
        parse_test.go:409: 500 iterations, 11266 mallocs per iteration
BenchmarkRawLevelTokenizer     2000     903065 ns/op   86.55 MB/s
        token_test.go:678: 2000 iterations, 28 mallocs per iteration
BenchmarkLowLevelTokenizer     2000    1260032 ns/op   62.03 MB/s
        token_test.go:678: 2000 iterations, 41 mallocs per iteration
BenchmarkHighLevelTokenizer     1000    2143356 ns/op   36.47 MB/s
        token_test.go:678: 1000 iterations, 3231 mallocs per iteration

R=r, rsc, rogpeppe
CC=andybalholm, golang-dev
https://golang.org/cl/6255062
src/pkg/exp/html/atom/atom.go [new file with mode: 0644]
src/pkg/exp/html/atom/atom_test.go [new file with mode: 0644]
src/pkg/exp/html/atom/gen.go [new file with mode: 0644]
src/pkg/exp/html/atom/table.go [new file with mode: 0644]
src/pkg/exp/html/token.go