基于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中semaphore(信号量)源码
Apr 03 Golang
go语言map与string的相互转换的实现
Apr 07 Golang
Golang二维切片初始化的实现
Apr 08 Golang
golang在GRPC中设置client的超时时间
Apr 27 Golang
goland 恢复已更改文件的操作
Apr 28 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
golang import自定义包方式
Apr 29 Golang
Golang 使用Map实现去重与set的功能操作
Apr 29 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
go语言基础 seek光标位置os包的使用
May 09 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
Go语言基础知识点介绍
Jul 04 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
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python基于DES算法加密解密实例
2015/06/03 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
办理退休介绍信
2014/01/09 职场文书
生产部管理制度
2014/01/31 职场文书
美国留学经济担保书
2014/05/20 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
实习协议书
2015/01/27 职场文书
数学教师求职信范文
2015/03/20 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
Python获取字典中某个key的value
2022/04/13 Python