基于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中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
golang中切片copy复制和等号复制的区别介绍
Apr 27 Golang
goland 恢复已更改文件的操作
Apr 28 Golang
解决go在函数退出后子协程的退出问题
Apr 30 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
Golang 语言控制并发 Goroutine的方法
Jun 30 Golang
golang中字符串MD5生成方式总结
Jul 04 Golang
golang操作rocketmq的示例代码
Apr 06 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php公用函数列表[正则]
2007/02/22 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
Python 解析XML文件
2009/04/15 Python
使用grappelli为django admin后台添加模板
2014/11/18 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
简单了解django索引的相关知识
2019/07/17 Python
Python3常用内置方法代码实例
2019/11/18 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
Python 实现微信自动回复的方法
2020/09/11 Python
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
优秀的个人求职信范文
2014/05/09 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
2015年学校总务工作总结
2015/07/20 职场文书