基本数据类型与字符串之间的转换,优先使用 strconv 而不是 fmt,因为前者性能更佳。

Go 高性能编程技法 - 知乎 https://zhuanlan.zhihu.com/p/482547957

1.1 优先使用 strconv 而不是 fmt

基本数据类型与字符串之间的转换,优先使用 strconv 而不是 fmt,因为前者性能更佳。

// Bad
for i := 0; i < b.N; i++ {
 s := fmt.Sprint(rand.Int())
}

BenchmarkFmtSprint-4    143 ns/op    2 allocs/op

// Good
for i := 0; i < b.N; i++ {
 s := strconv.Itoa(rand.Int())
}

BenchmarkStrconv-4    64.2 ns/op    1 allocs/op

为什么性能上会有两倍多的差距,因为 fmt 实现上利用反射来达到范型的效果,在运行时进行类型的动态判断,所以带来了一定的性能损耗。

 

posted @   papering  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-05-11 哪儿网领域驱动设计(DDD)实践之路 Qunar技术沙龙 2021-05-11
2021-05-11 闲鱼单体应用Serverless化拆分实践 原创 柬超 闲鱼技术 今天
2021-05-11 // context canceled ctx := context.Background()
2021-05-11 Virtual DOM(虚拟DOM)
2021-05-11 新一代Web技术栈的演进:SSR/SSG/ISR/DPR都在做什么?
2021-05-11 延迟队列浅析 原创 张浩 网易传媒技术团队 2019-08-02
2021-05-11 延时队列 阙祥盛 百果科技研发团队 2020-06-25
点击右上角即可分享
微信分享提示