• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    基于Go Int转string几种方式性能测试

    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))
    }

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

    您可能感兴趣的文章:
    • Golang 空map和未初始化map的注意事项说明
    • Golang 如何判断数组某个元素是否存在 (isset)
    • golang 函数返回chan类型的操作
    • Go语言的Channel遍历方法详解
    • Golang 拷贝Array或Slice的操作
    • Go语言中break label与goto label的区别
    • Go 实现英尺和米的简单单位换算方式
    上一篇:Go语言中break label与goto label的区别
    下一篇:Golang 拷贝Array或Slice的操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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