Improve rendering time

50% speedup.  Fix #91

to run the benchmark:

		go test -test.run=NONE -bench=".*" -test.benchmem=true ./transform/ > new.txt

to compare the results:

		/usr/local/go/misc/benchcmp baseline.txt new.txt

Speedup and memory improvements

		benchmark             old ns/op    new ns/op    delta
		BenchmarkChain           101219        50453  -50.15%
		BenchmarkTransform        51625        45531  -11.80%

		benchmark            old allocs   new allocs    delta
		BenchmarkChain              222          103  -53.60%
		BenchmarkTransform          135          106  -21.48%

		benchmark             old bytes    new bytes    delta
		BenchmarkChain            23919        10998  -54.02%
		BenchmarkTransform        11858        10665  -10.06%
This commit is contained in:
Noah Campbell 2013-10-31 22:14:11 -07:00
parent f4cb8e1688
commit 9af47f07d3
9 changed files with 58 additions and 115 deletions

View file

@ -15,7 +15,8 @@ func TestChainZeroTransformers(t *testing.T) {
}
func TestChainOneTransformer(t *testing.T) {
tr := NewChain(&AbsURL{BaseURL: "http://base"})
absURL, _ := AbsURL("http://base")
tr := NewChain(absURL...)
apply(t.Errorf, tr, abs_url_tests)
}
@ -28,19 +29,19 @@ var two_chain_tests = []test{
}
func TestChainTwoTransformer(t *testing.T) {
tr := NewChain(
&AbsURL{BaseURL: "http://two"},
&NavActive{Section: "section_1"},
)
absURL, _ := AbsURL("http://two")
nav := NavActive("section_1", "hugo-nav")
tr := NewChain(append(absURL, nav...)...)
apply(t.Errorf, tr, two_chain_tests)
}
func BenchmarkChain(b *testing.B) {
tr := NewChain(
&AbsURL{BaseURL: "http://two"},
&NavActive{Section: "section_1"},
)
absURL, _ := AbsURL("http://two")
nav := NavActive("section_1", "hugo-nav")
tr := NewChain(append(absURL, nav...)...)
b.ResetTimer()
for i := 0; i < b.N; i++ {
apply(b.Errorf, tr, two_chain_tests)
}