Use bytes.Buffer for tomlLexer.buffer (#166)

* Use bytes.Buffer for tomlLexer.buffer
* Add BenchmarkLexer

Fix #165

name     old time/op    new time/op    delta
Lexer-4     343µs ± 1%     331µs ± 1%  -3.56%  (p=0.000 n=20+19)

name     old alloc/op   new alloc/op   delta
Lexer-4    55.8kB ± 0%    50.8kB ± 0%  -8.86%  (p=0.000 n=20+20)

name     old allocs/op  new allocs/op  delta
Lexer-4     2.01k ± 0%     1.84k ± 0%  -8.46%  (p=0.000 n=20+20)
This commit is contained in:
Albert Nigmatzianov
2017-05-30 19:27:36 +02:00
committed by Thomas Pelletier
parent 048765b449
commit 26ae43fdee
2 changed files with 36 additions and 6 deletions
+29
View File
@@ -1,6 +1,7 @@
package toml
import (
"os"
"strings"
"testing"
)
@@ -748,3 +749,31 @@ func TestLexUnknownRvalue(t *testing.T) {
{Position{1, 5}, tokenError, `no value can start with \`},
})
}
func BenchmarkLexer(b *testing.B) {
sample := `title = "Hugo: A Fast and Flexible Website Generator"
baseurl = "http://gohugo.io/"
MetaDataFormat = "yaml"
pluralizeListTitles = false
[params]
description = "Documentation of Hugo, a fast and flexible static site generator built with love by spf13, bep and friends in Go"
author = "Steve Francia (spf13) and friends"
release = "0.22-DEV"
[[menu.main]]
name = "Download Hugo"
pre = "<i class='fa fa-download'></i>"
url = "https://github.com/spf13/hugo/releases"
weight = -200
`
rd := strings.NewReader(sample)
b.ResetTimer()
for i := 0; i < b.N; i++ {
rd.Seek(0, os.SEEK_SET)
ch := lexToml(rd)
for _ = range ch {
}
}
}