基于Go Int转string几种方式性能测试
程序员文章站
2022-04-03 09:41:46
go语言内置int转string至少有3种方式:fmt.sprintf("%d",n)strconv.itoa(n)strconv.formatint(n,10)下面针对这3中方式的性能做一下简单的测...
go语言内置int转string至少有3种方式:
fmt.sprintf("%d",n) strconv.itoa(n) strconv.formatint(n,10)
下面针对这3中方式的性能做一下简单的测试:
package gotest import ( "fmt" "strconv" "testing" ) func benchmarksprintf(b *testing.b) { n := 10 b.resettimer() for i := 0; i < b.n; i++ { fmt.sprintf("%d", n) } } func benchmarkitoa(b *testing.b) { n := 10 b.resettimer() for i := 0; i < b.n; i++ { strconv.itoa(n) } } func benchmarkformatint(b *testing.b) { n := int64(10) b.resettimer() for i := 0; i < b.n; i++ { strconv.formatint(n, 10) } }
保存文件为int2string_test.go
执行:
go test -v -bench=. int2string_test.go -benchmem
goos: darwin goarch: amd64 benchmarksprintf-8 20000000 114 ns/op 16 b/op 2 allocs/op benchmarkitoa-8 200000000 6.33 ns/op 0 b/op 0 allocs/op benchmarkformatint-8 300000000 4.10 ns/op 0 b/op 0 allocs/op pass ok command-line-arguments 5.998s
总体来说,strconv.formatint()效率最高,fmt.sprintf()效率最低
补充:golang类型转换, 整型转换成字符串,字符串转换成整型
看代码吧~
package main import ( "fmt" "reflect" "strconv" ) func main() { //字符串转成整型int num,err:=strconv.atoi("123") if err!=nil { panic(err) } fmt.println(num,reflect.typeof(num)) //整型转换成字符串 str:=strconv.itoa(123) fmt.println(str,reflect.typeof(str)) }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
上一篇: 朱棣封赏的功臣李景隆真的是个草包吗?