欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于Go Int转string几种方式性能测试

程序员文章站 2022-07-29 21:29:56
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))
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

相关标签: Go Int string