URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [go/] [printer/] [performance_test.go] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2009 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.// This file implements a simple printer performance benchmark:// gotest -bench=BenchmarkPrintpackage printerimport ("bytes""go/ast""go/parser""io""io/ioutil""log""testing")var testfile *ast.Filefunc testprint(out io.Writer, file *ast.File) {if err := (&Config{TabIndent | UseSpaces, 8}).Fprint(out, fset, file); err != nil {log.Fatalf("print error: %s", err)}}// cannot initialize in init because (printer) Fprint launches goroutines.func initialize() {const filename = "testdata/parser.go"src, err := ioutil.ReadFile(filename)if err != nil {log.Fatalf("%s", err)}file, err := parser.ParseFile(fset, filename, src, parser.ParseComments)if err != nil {log.Fatalf("%s", err)}var buf bytes.Buffertestprint(&buf, file)if !bytes.Equal(buf.Bytes(), src) {log.Fatalf("print error: %s not idempotent", filename)}testfile = file}func BenchmarkPrint(b *testing.B) {if testfile == nil {initialize()}for i := 0; i < b.N; i++ {testprint(ioutil.Discard, testfile)}}
