1
0
mirror of https://github.com/golang/go synced 2024-09-25 15:10:11 -06:00
go/test/bench/go1/parser_test.go
Dave Cheney 6423682019 test/bench/go1: add go/parser benchmark
As discussed in

https://groups.google.com/d/msg/golang-dev/Na9XE6mcQyY/zbeBI7R-vnoJ

Here is a static copy of the go/parser benchmark. I ended up using
fancy encodings because the original parser.go had a number of `s
scattered throughout which made it hard to embed the source directly.

Curiously on my laptop this benchmark always scores roughly 10% higher
than the standalone benchmark. This may be down to the generation of
the fasta data set triggering the cpu governor to raise the cpu speed.
However the benchmark is consistent with itself across multiple runs.

R=golang-dev, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/6305055
2012-06-07 10:23:45 +10:00

44 lines
903 B
Go

// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package go1
// go parser benchmark based on go/parser/performance_test.go
import (
"compress/bzip2"
"encoding/base64"
"go/parser"
"go/token"
"io"
"io/ioutil"
"strings"
"testing"
)
var (
parserbytes = makeParserBytes()
)
func makeParserBytes() []byte {
var r io.Reader
r = strings.NewReader(parserbz2_base64)
r = base64.NewDecoder(base64.StdEncoding, r)
r = bzip2.NewReader(r)
b, err := ioutil.ReadAll(r)
if err != nil {
panic(err)
}
return b
}
func BenchmarkParse(b *testing.B) {
b.SetBytes(int64(len(parserbytes)))
for i := 0; i < b.N; i++ {
if _, err := parser.ParseFile(token.NewFileSet(), "", parserbytes, parser.ParseComments); err != nil {
b.Fatalf("benchmark failed due to parse error: %s", err)
}
}
}