基于Go Int转string几种方式性能测试
作者:贤冰 发布时间:2024-05-08 10:17:04
标签:Go,Int,string
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))
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持asp之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/flyfreelyit/article/details/79701577


猜你喜欢
- 前言通常我们的python代码都是遵循PEP8的规范化格式,目的是为了保持代码的一致性、可读性。,这里给大家推荐几个常用的静态代码检查工具,
- 目录一、IDEA如何连接数据库第一种方法:直接在方法体中增加连接信息方法二:二、方法代码的实现1.快递员增加快递2.快递员删除快递用数据库编
- 1、吃金币源码分享:import osimport cfgimport sysimport pygameimport randomfrom
- python实现PSO算法优化二元函数,具体代码如下所示:import numpy as np import random import m
- 我们知道**代表次方。如下>>>12 * 12144>>>12 ** 2144>>>a
- 在实际应用过程中,只要保证选项卡模块结构代码的完整性,就可以任意添加N个同类选项卡,不需要手动在HTML里绑定事件处理程序以及给要隐藏显示的
- 配置说明 Linux版本:Centos7 M
- 本文实例讲述了python中Flask框架的简单用法。分享给大家供大家参考。具体如下:使用Flask框架的简单入门范例代码,如果你正学习Fl
- 在自然语言处理过程中,全角、半角的的不一致会导致信息抽取不一致,因此需要统一。有规律(不含空格):全角字符unicode编码从65281~6
- 我最近在参与Python字节码相关的工作,想与大家分享一些这方面的经验。更准确的说,我正在参与2.6到2.7版本的CPython解释器字节码
- TKinterPython 的 GUI 库非常多,之所以选择 Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,跨平台兼容性
- 区别1let和var用来声明变量,const用来声明常量。变量就是赋值后可以改变它的值,常量就是赋值后就不能改变它的值。当声明为对象时,可以
- Ajax,全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML。它不是一门编程语言,而
- 资源预加载组件——preload队列,可以支持队列加载和回调,也可以加载视频或者音频进度条,可以动态获取进度条信息支持img标签的预加载,添
- 今天要介绍的是,如何生成一个"继承"多个对象的实例。 比如,现在有一个"动物"对象的构造函数, fu
- 关于Python的格式化字符串,几乎所有接触过Python语言的人都知道其中一种,即使用运算符%,但对于绝大多数初学者来说也仅此而已。因此,
- springboot配置文件抽离,便于服务器读取对应配置文件,避免项目频繁更改配置文件,影响项目的调试与发布1.创建统一配置中心项目coni
- 下面是一段产生log-normal分布的代码,以此进行说明。clear all;clc;for t=1:100 Traffic(t) =cu
- 背景喵哥想在MFC中调用python脚本,在原来的代码中包含一个只支持x86的库文件(超级核心的文件),原本安装的python是x64的,强
- 一、前言有时候觉得电影真是人类有史以来最伟大的发明,我喜欢看电影,看电影可以让我们增长见闻,学习知识。从某种角度上而言,电影凭借自身独有的魅