自己实现 to_string 性能提升415%
作者:
| 更新日期:是不是还在使用 to_string,很影响性能的好不。
本文首发于公众号:天空的代码世界,微信号:tiankonguse
零、背景
之前在《你知道吗?string比字符串快20%》文章中介绍了 string 代替 字符串 可以提少 性能,收到不少好评。
今天遇到数字转字符串函数,突然意识到这个5年前我也压测过。
于是找到压测程序,修改后重新压测,发现最优的实现比c++
自带的to_string
快4倍,这里分享给大家。
一、基本需求
基本需求是有一个数字,想转化为字符串。
c++
自带的函数是to_string
, c
的话没有自带函数,我们需要使用snprintf
来实现。
系统函数为了兼容各种情况,会实现的特别复杂,这也导致最终这些系统函数性能很低。
我分别对比了 to_string
、snprintf
以及自己实现这三个方法,发现自己实现的比系统自带的函数快5倍,也就是提升了至少400%。
二、数据实现
to_string
的实现最简单,直接传参即可返回 string。
snprintf
的实现需要先定义一个 buf, 然后把数字转换到字符串里,最后再赋值给 string。
自己实现和snprintf
类似,不过是自己不断除 10 得到每一位的字符的,最后转化为 string。
对比数据如下, 可以看到,自己实现平均需要 0.027us, 而 to_string
则需要 0.14us,相差五倍之多。
三、最后
to_string
执行一次平均使用 0.14us, 时间还是蛮多的,大家以后如果比较注重性能,就要尽量少使用这个函数了。
相关代码已经上传到 github, 公众号后台回复数字转字符串
获取源码地址。
-EOF-
本文公众号:天空的代码世界
个人微信号:tiankonguse
公众号ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。