string函数_自己实现 to_string 性能提升415%

是不是还在使用 to_string,很影响性能的好不。

零、背景

之前在《你知道吗?string比字符串快20%》文章中介绍了 string 代替 字符串 可以提升不少 性能,收到不少好评。

今天遇到数字转字符串函数,突然意识到这个5年前我也压测过。

于是找到压测程序,修改后重新压测,发现最优的实现比c++自带的to_string快4倍,这里分享给大家。

一、基本需求

基本需求是有一个数字,想转化为字符串。

c++ 自带的函数是to_string, c的话没有自带函数,我们需要使用snprintf来实现。

系统函数为了兼容各种情况,会实现的特别复杂,这也导致最终这些系统函数性能很低。

我分别对比了 to_stringsnprintf 以及自己实现这三个方法,发现自己实现的比系统自带的函数快5倍,也就是提升了至少400%。

二、数据实现

to_string 的实现最简单,直接传参即可返回 string。

snprintf 的实现需要先定义一个 buf, 然后把数字转换到字符串里,最后再赋值给 string。

自己实现和snprintf类似,不过是自己不断除 10 得到每一位的字符的,最后转化为 string。

对比数据如下, 可以看到,自己实现平均需要 0.027us, 而 to_string则需要 0.14us,相差五倍之多。

d15d0ac8bbb70dc03d88f2787a92a9b6.png

三、最后

to_string 执行一次平均使用 0.14us, 时间还是蛮多的,大家以后如果比较注重性能,就要尽量少使用这个函数了。

相关代码已经上传到 github, 公众号后台回复数字转字符串获取源码地址。

-EOF-

题图:来源自朋友圈。

5db2791ef43b991eb7ac75616b4f41d6.png

上篇文章:视频的比特率、关键帧、FPS啥意思?

推荐:你知道吗?string比字符串快20%

本文公众号:天空的代码世界

个人微信号:tiankonguse

微博:tiankongus

twitter:tiankonguse

B站:点击原文直达 

微信群:微信拉你(算法闲聊群)

QQ算法群:165531769(比赛通知群)

知识星球:不止算法

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值