天天看点

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

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

零、背景

之前在《你知道吗?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,相差五倍之多。

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

三、最后

to_string

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

相关代码已经上传到 github, 公众号后台回复

数字转字符串

获取源码地址。

-EOF-

题图:来源自朋友圈。

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

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

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

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

个人微信号:tiankonguse

微博:tiankongus

twitter:tiankonguse

B站:点击原文直达 

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

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

知识星球:不止算法