mirror of
https://github.com/golang/go
synced 2024-11-25 12:37:56 -07:00
6423682019
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
44 lines
903 B
Go
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)
|
|
}
|
|
}
|
|
}
|