Skip to content

Instantly share code, notes, and snippets.

@lorinbeer
Created August 27, 2019 18:07
Show Gist options
  • Save lorinbeer/3f36fd80af71c61298ef60ba8b7136db to your computer and use it in GitHub Desktop.
Save lorinbeer/3f36fd80af71c61298ef60ba8b7136db to your computer and use it in GitHub Desktop.
preconvert vs in place conversion benchmark
package main
import (
"testing"
)
type myKindaString string
// do nothing ops, no we don't need three
func doSumptin(a string) {}
func BenchmarkConversion(b *testing.B) {
var mine myKindaString
mine = "crapola"
for n := 0; n < b.N; n++ {
doSumptin(string(mine))
}
}
func BenchmarkPreConvert(b *testing.B) {
var mine myKindaString
mine = "sumtin"
sMine := string(mine)
for n := 0; n < b.N; n++ {
doSumptin(sMine)
}
}
@lorinbeer
Copy link
Author

$ go test -bench=.
goos: darwin
goarch: amd64
BenchmarkConversion-8 2000000000 0.30 ns/op
BenchmarkPreConvert-8 2000000000 0.60 ns/op

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment