View difference between Paste ID: MyrBanSZ and ukxUmAwa
SHOW: | | - or go back to the newest paste.
1
/*
2
3
Cloned from: https://pastebin.com/ukxUmAwa
4
5
AMD Athlon64 X2
6
2GB DDR2
7
8
Go 1.5.1 linux/amd64
9
10
Ubuntu 15.10
11
Linux asus 4.2.0-19-generic #23-Ubuntu SMP Wed Nov 11 11:39:30 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
12
13
BenchmarkStringSprintf-2	     100	  10140559 ns/op	 5518024 B/op	    4616 allocs/op
14
BenchmarkStringJoin-2   	     200	   6962496 ns/op	 5388737 B/op	    2000 allocs/op
15
BenchmarkStringAdd-2    	     500	   3440360 ns/op	 2694352 B/op	     999 allocs/op
16
BenchmarkStringWrite-2  	   30000	     54597 ns/op	   18656 B/op	       8 allocs/op
17
BenchmarkStringAppend-2 	   30000	     41325 ns/op	   20736 B/op	      13 allocs/op
18
BenchmarkBytesJoin-2    	     300	   4883126 ns/op	 2694449 B/op	    1001 allocs/op
19
BenchmarkBytesAppend-2  	   30000	     53491 ns/op	   20736 B/op	      13 allocs/op
20
BenchmarkBytesWrite-2   	   20000	     64233 ns/op	   18656 B/op	       8 allocs/op
21
22
Feel free to change the LIMIT.
23
24
*/
25
package test
26
27
import (
28
	"bytes"
29
	"fmt"
30
	"strings"
31
	"testing"
32
)
33
34
var (
35
	s1 = "local"
36
	b1 = []byte("local")
37
)
38
39
const LIMIT = 1000
40
41
func BenchmarkStringSprintf(b *testing.B) {
42
	var q string
43
	for i := 0; i < b.N; i++ {
44
		for j := 0; j < LIMIT; j++ {
45
			q = fmt.Sprintf("%s%s", q, s1)
46
		}
47
		q = ""
48
	}
49
	b.ReportAllocs()
50
}
51
52
func BenchmarkStringJoin(b *testing.B) {
53
	var q string
54
	for i := 0; i < b.N; i++ {
55
		for j := 0; j < LIMIT; j++ {
56
			q = strings.Join([]string{q, s1}, "")
57
		}
58
		q = ""
59
	}
60
	b.ReportAllocs()
61
}
62
63
func BenchmarkStringAdd(b *testing.B) {
64
	var q string
65
	for i := 0; i < b.N; i++ {
66
		for j := 0; j < LIMIT; j++ {
67
			q = q + s1
68
		}
69
		q = ""
70
	}
71
	b.ReportAllocs()
72
}
73
74
func BenchmarkStringWrite(b *testing.B) {
75
	q := new(bytes.Buffer)
76
	for i := 0; i < b.N; i++ {
77
		for j := 0; j < LIMIT; j++ {
78
			q.WriteString(s1)
79
		}
80
		q = new(bytes.Buffer)
81
	}
82
}
83
84
func BenchmarkStringAppend(b *testing.B) {
85
	var q []byte
86
	for i := 0; i < b.N; i++ {
87
		for j := 0; j < LIMIT; j++ {
88
			q = append(q, s1...)
89
		}
90
		q = nil
91
	}
92
	b.ReportAllocs()
93
}
94
95
func BenchmarkBytesJoin(b *testing.B) {
96
	var q []byte
97
	for i := 0; i < b.N; i++ {
98
		for j := 0; j < LIMIT; j++ {
99
			q = bytes.Join([][]byte{q, b1}, nil)
100
		}
101
		q = nil
102
	}
103
	b.ReportAllocs()
104
}
105
106
func BenchmarkBytesAppend(b *testing.B) {
107
	var q []byte
108
	for i := 0; i < b.N; i++ {
109
		for j := 0; j < LIMIT; j++ {
110
			q = append(q, b1...)
111
		}
112
		q = nil
113
	}
114
	b.ReportAllocs()
115
}
116
117
func BenchmarkBytesWrite(b *testing.B) {
118
	q := new(bytes.Buffer)
119
	for i := 0; i < b.N; i++ {
120
		for j := 0; j < LIMIT; j++ {
121
			q.Write(b1)
122
		}
123
		q = new(bytes.Buffer)
124
	}
125
}