Add benchmark test for StripHTML
authorbep <bjorn.erik.pedersen@gmail.com>
Fri, 6 Feb 2015 09:00:42 +0000 (10:00 +0100)
committerbep <bjorn.erik.pedersen@gmail.com>
Fri, 6 Feb 2015 09:00:42 +0000 (10:00 +0100)
go test -test.run=NONE -bench=".*" -test.benchmem=true ./helpers

Old vs new impl (string.Replace vs string.Replacer):

benchmark              old ns/op     new ns/op     delta
BenchmarkStripHTML     10210         6572          -35.63%

benchmark              old allocs     new allocs     delta
BenchmarkStripHTML     6              5              -16.67%

benchmark              old bytes     new bytes     delta
BenchmarkStripHTML     1456          848           -41.76%

helpers/content_test.go

index 44cee2f50a1ffbcee0efc8496a85fb52f257de97..e2410cedd3949f2db6eb3c81890febcab827aea7 100644 (file)
@@ -7,6 +7,8 @@ import (
        "testing"
 )
 
+const tstHtmlContent = "<!DOCTYPE html><html><head><script src=\"http://two/foobar.js\"></script></head><body><nav><ul><li hugo-nav=\"section_0\"></li><li hugo-nav=\"section_1\"></li></ul></nav><article>content <a href=\"http://two/foobar\">foobar</a>. Follow up</article><p>This is some text.<br>And some more.</p></body></html>"
+
 func TestStripHTML(t *testing.T) {
        type test struct {
                input, expected string
@@ -26,6 +28,13 @@ func TestStripHTML(t *testing.T) {
        }
 }
 
+func BenchmarkStripHTML(b *testing.B) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               StripHTML(tstHtmlContent)
+       }
+}
+
 func TestStripEmptyNav(t *testing.T) {
        cleaned := StripEmptyNav([]byte("do<nav>\n</nav>\n\nbedobedo"))
        assert.Equal(t, []byte("dobedobedo"), cleaned)