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


Posted in Golang onApril 28, 2021

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 相关文章推荐
Go语言操作数据库及其常规操作的示例代码
Apr 21 Golang
Go缓冲channel和非缓冲channel的区别说明
Apr 25 Golang
go 原生http web 服务跨域restful api的写法介绍
Apr 27 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
Golang: 内建容器的用法
May 05 Golang
go类型转换及与C的类型转换方式
May 05 Golang
Go 自定义package包设置与导入操作
May 06 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
Golang使用Panic与Recover进行错误捕获
Mar 22 Golang
深入理解 Golang 的字符串
May 04 Golang
Python测试框架pytest核心库pluggy详解
Aug 05 Golang
Go gorilla/sessions库安装使用
Aug 14 Golang
Go语言中break label与goto label的区别
golang 如何用反射reflect操作结构体
Apr 28 #Golang
golang 生成对应的数据表struct定义操作
Apr 28 #Golang
golang 如何通过反射创建新对象
Apr 28 #Golang
golang 实现两个结构体复制字段
Apr 28 #Golang
go结构体嵌套的切片数组操作
Apr 28 #Golang
golang json数组拼接的实例
Apr 28 #Golang
You might like
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
jstree的简单实例
2016/12/01 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
vue二级路由设置方法
2018/02/09 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
Python 开发Activex组件方法
2009/11/08 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
python使用threading获取线程函数返回值的实现方法
2017/11/15 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
护理专业学生的求职信范文
2013/12/11 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
总经理致辞
2015/07/29 职场文书
高一军训感想
2015/08/07 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
Golang 对es的操作实例
2022/04/20 Golang
如何基于python实现单目三维重建详解
2022/06/25 Python