基于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 02 Golang
Golang 实现超大文件读取的两种方法
Apr 27 Golang
golang 如何用反射reflect操作结构体
Apr 28 Golang
Golang 使用Map实现去重与set的功能操作
Apr 29 Golang
Golang中interface{}转为数组的操作
Apr 30 Golang
Golang: 内建容器的用法
May 05 Golang
Golang Gob编码(gob包的使用详解)
May 07 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 Golang
在ubuntu下安装go开发环境的全过程
Aug 05 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
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
php中JSON的使用方法
2015/04/30 PHP
php读取csc文件并输出
2015/05/21 PHP
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
微信小程序利用云函数获取手机号码
2019/12/17 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
python中文乱码的解决方法
2013/11/04 Python
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
讲解Python中的递归函数
2015/04/27 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
详解python数据结构和算法
2019/04/18 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
python实现简单的购物程序代码实例
2020/03/03 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
质量安全标语
2014/06/07 职场文书
ktv好的活动方案
2014/08/15 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript