基于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 相关文章推荐
Golang 实现超大文件读取的两种方法
Apr 27 Golang
goland 恢复已更改文件的操作
Apr 28 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
golang 比较浮点数的大小方式
May 02 Golang
解决Goland 同一个package中函数互相调用的问题
May 06 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
Go语言实现一个简单的并发聊天室的项目实战
Mar 18 Golang
Golang流模式之grpc的四种数据流
Apr 13 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
基于Python实现西西成语接龙小助手
Aug 05 Golang
Go中使用gjson来操作JSON数据的实现
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
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php修改时间格式的代码
2011/05/29 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
php实现word转html的方法
2016/01/22 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
面试题:react和vue的区别分析
2019/04/08 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
python基于SMTP协议发送邮件
2019/05/31 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
介绍一下linux文件系统分配策略
2013/02/25 面试题
JAVA程序员面试题
2012/10/03 面试题
智能电子应届生求职信
2013/11/10 职场文书
教育孩子心得体会
2014/01/01 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
通知范文怎么写
2015/04/16 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书