]> Cypherpunks repositories - gostls13.git/commitdiff
go/test/bench/go1: add printf and time format tests
authorRob Pike <r@golang.org>
Tue, 12 Mar 2013 00:17:25 +0000 (17:17 -0700)
committerRob Pike <r@golang.org>
Tue, 12 Mar 2013 00:17:25 +0000 (17:17 -0700)
Also rename the go parser test to GoParse so it doesn't grab the globally useful Parse name.

R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/7732044

test/bench/go1/fmt_test.go [new file with mode: 0644]
test/bench/go1/parser_test.go
test/bench/go1/time_test.go [new file with mode: 0644]

diff --git a/test/bench/go1/fmt_test.go b/test/bench/go1/fmt_test.go
new file mode 100644 (file)
index 0000000..d3c6956
--- /dev/null
@@ -0,0 +1,68 @@
+// Copyright 2013 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
+
+// benchmark based on fmt/fmt_test.go
+
+import (
+       "bytes"
+       "fmt"
+       "testing"
+)
+
+func BenchmarkFmtFprintfEmpty(b *testing.B) {
+       var buf bytes.Buffer
+       for i := 0; i < b.N; i++ {
+               fmt.Fprintf(&buf, "")
+       }
+}
+
+func BenchmarkFmtFprintfString(b *testing.B) {
+       var buf bytes.Buffer
+       for i := 0; i < b.N; i++ {
+               buf.Reset()
+               fmt.Fprintf(&buf, "%s", "hello")
+       }
+}
+
+func BenchmarkFmtFprintfInt(b *testing.B) {
+       var buf bytes.Buffer
+       for i := 0; i < b.N; i++ {
+               buf.Reset()
+               fmt.Fprintf(&buf, "%d", 5)
+       }
+}
+
+func BenchmarkFmtFprintfIntInt(b *testing.B) {
+       var buf bytes.Buffer
+       for i := 0; i < b.N; i++ {
+               buf.Reset()
+               fmt.Fprintf(&buf, "%d %d", 5, 6)
+       }
+}
+
+func BenchmarkFmtFprintfPrefixedInt(b *testing.B) {
+       var buf bytes.Buffer
+       for i := 0; i < b.N; i++ {
+               buf.Reset()
+               fmt.Fprintf(&buf, "This is some meaningless prefix text that needs to be scanned %d", 6)
+       }
+}
+
+func BenchmarkFmtFprintfFloat(b *testing.B) {
+       var buf bytes.Buffer
+       for i := 0; i < b.N; i++ {
+               buf.Reset()
+               fmt.Fprintf(&buf, "%g", 5.23184)
+       }
+}
+
+func BenchmarkFmtManyArgs(b *testing.B) {
+       var buf bytes.Buffer
+       for i := 0; i < b.N; i++ {
+               buf.Reset()
+               fmt.Fprintf(&buf, "%2d/%2d/%2d %d:%d:%d %s %s\n", 3, 4, 5, 11, 12, 13, "hello", "world")
+       }
+}
index 26580b887255f307e0ba3a9427ba330a4a712850..7848cadd228e6dafc6db97802a2308dfcfc1d3bc 100644 (file)
@@ -33,7 +33,7 @@ func makeParserBytes() []byte {
        return b
 }
 
-func BenchmarkParse(b *testing.B) {
+func BenchmarkGoParse(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 {
diff --git a/test/bench/go1/time_test.go b/test/bench/go1/time_test.go
new file mode 100644 (file)
index 0000000..4687de3
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright 2013 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
+
+// benchmark based on time/time_test.go
+
+import (
+       "testing"
+       "time"
+)
+
+func BenchmarkTimeParse(b *testing.B) {
+       for i := 0; i < b.N; i++ {
+               time.Parse(time.ANSIC, "Mon Jan  2 15:04:05 2006")
+       }
+}
+
+func BenchmarkTimeFormat(b *testing.B) {
+       t := time.Unix(1265346057, 0)
+       for i := 0; i < b.N; i++ {
+               t.Format("Mon Jan  2 15:04:05 2006")
+       }
+}