package benchmark import ( "bytes" "strings" "testing" ) var result interface{} //BenchmarkBytesToStrings convert a []bytes in a string //https://golang.org/pkg/bytes/#Compare func BenchmarkBytesToStrings(b *testing.B) { s1 := []byte("string to convert") b.ResetTimer() b.ReportAllocs() var r string for n := 0; n < b.N; n++ { r = string(s1) } result = r } //BenchmarkBytesCompare compare 2 []bytes. //https://golang.org/pkg/bytes/#Compare func BenchmarkBytesCompare(b *testing.B) { s1 := []byte("string to compare") s2 := []byte("string to compare") b.ResetTimer() b.ReportAllocs() var r int for n := 0; n < b.N; n++ { r = bytes.Compare(s1, s2) } result = r } //BenchmarkStringsCompare compare 2 strings. //https://golang.org/pkg/strings/#Compare func BenchmarkStringsCompare(b *testing.B) { s1 := "string to compare" s2 := "string to compare" b.ResetTimer() b.ReportAllocs() var r int for n := 0; n < b.N; n++ { r = strings.Compare(s1, s2) } result = r } //BenchmarkBytesContains check contains method //https://golang.org/pkg/bytes/#Contains func BenchmarkBytesContains(b *testing.B) { s1 := []byte("string to compare") s2 := []byte("comparc") b.ResetTimer() b.ReportAllocs() var r bool for n := 0; n < b.N; n++ { r = bytes.Contains(s1, s2) } result = r } //BenchmarkStringsContains check contains method //https://golang.org/pkg/strings/#Contains func BenchmarkStringsContains(b *testing.B) { s1 := "string to compare" s2 := "comparc" b.ResetTimer() b.ReportAllocs() var r bool for n := 0; n < b.N; n++ { r = strings.Contains(s1, s2) } result = r } //BenchmarkBytesIndex check contains index //https://golang.org/pkg/bytes/#Index func BenchmarkBytesIndex(b *testing.B) { s1 := []byte("string to compare") s2 := []byte("e") b.ResetTimer() b.ReportAllocs() var r int for n := 0; n < b.N; n++ { r = bytes.Index(s1, s2) } result = r } //BenchmarkStringIndex check contains index //https://golang.org/pkg/strings/#Index func BenchmarkStringIndex(b *testing.B) { s1 := "string to compare" s2 := "e" b.ResetTimer() b.ReportAllocs() var r int for n := 0; n < b.N; n++ { r = strings.Index(s1, s2) } result = r } //BenchmarkBytesReplace check replace method //https://golang.org/pkg/bytes/#Replace func BenchmarkBytesReplace(b *testing.B) { s1 := []byte("string to comparc") s2 := []byte("comparc") s3 := []byte("compare") b.ResetTimer() b.ReportAllocs() var r []byte for n := 0; n < b.N; n++ { r = bytes.Replace(s1, s2, s3, -1) } result = r } //BenchmarkStringsReplace check replace method //https://golang.org/pkg/strings/#Replace func BenchmarkStringsReplace(b *testing.B) { s1 := "string to comparc" s2 := "comparc" s3 := "compare" b.ResetTimer() b.ReportAllocs() var r string for n := 0; n < b.N; n++ { r = strings.Replace(s1, s2, s3, -1) } result = r } //BenchmarkBytesConcat concats 2 bytes func BenchmarkBytesConcat2(b *testing.B) { s1 := []byte("string to compare") s2 := []byte("string to add") b.ResetTimer() b.ReportAllocs() for n := 0; n < b.N; n++ { r := make([]byte, 0, len(s1)+len(s2)) r = append(r, s1...) r = append(r, s2...) } } //BenchmarkStringsConcat concats 2 strings func BenchmarkStringsConcat2(b *testing.B) { s1 := "string to compare" s2 := "string to add" b.ResetTimer() b.ReportAllocs() var r string for n := 0; n < b.N; n++ { r = s1 + s2 } result = r } //BenchmarkStringsJoin joins 2 strings //https://golang.org/pkg/strings/#Join func BenchmarkStringsJoin2(b *testing.B) { s1 := "string to compare" s2 := "string to add" b.ResetTimer() b.ReportAllocs() var r string for n := 0; n < b.N; n++ { j := []string{s1, s2} r = strings.Join(j, "") } result = r } //BenchmarkMapHints bench mymap[string(abytes)] func BenchmarkMapHints(b *testing.B) { mymap := make(map[string]string) mymap["key"] = "value" abytes := []byte("key") b.ResetTimer() b.ReportAllocs() var v string for n := 0; n < b.N; n++ { v, _ = mymap[string(abytes)] } result = v } //BenchmarkMapsHints_Dont bench key := string(abytes) //v, _ = mymap[key] func BenchmarkMapsHints_Dont(b *testing.B) { mymap := make(map[string]string) mymap["key"] = "value" abytes := []byte("key") b.ResetTimer() b.ReportAllocs() var v string for n := 0; n < b.N; n++ { key := string(abytes) v, _ = mymap[key] } result = v }