基于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语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
Golang全局变量加锁的问题解决
May 08 Golang
go语言基础 seek光标位置os包的使用
May 09 Golang
Go 语言下基于Redis分布式锁的实现方式
Jun 28 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
golang操作redis的客户端包有多个比如redigo、go-redis
Apr 14 Golang
Golang Elasticsearches 批量修改查询及发送MQ
Apr 19 Golang
Golang 字符串的常见操作
Apr 19 Golang
Go获取两个时区的时间差
Apr 20 Golang
Golang 实现 WebSockets 之创建 WebSockets
Apr 24 Golang
Go微服务项目配置文件的定义和读取示例详解
Jun 21 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和ACCESS写聊天室(四)
2006/10/09 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
过虑特殊字符输入的js代码
2010/08/05 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
python字典get()方法用法分析
2015/04/17 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python中new方法的详解
2019/01/15 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
大学生职业生涯规划书模版
2013/12/30 职场文书
三个儿子教学反思
2014/02/03 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
研发工程师岗位职责
2014/04/28 职场文书
财务管理专业自荐书
2014/09/02 职场文书
党员进社区活动总结
2015/05/07 职场文书
初一数学教学反思
2016/02/17 职场文书
python基础之函数的定义和调用
2021/10/24 Python