概述
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)) }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持靠谱客。如有错误或未考虑完全的地方,望不吝赐教。
最后
以上就是震动柜子为你收集整理的基于Go Int转string几种方式性能测试的全部内容,希望文章能够帮你解决基于Go Int转string几种方式性能测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复