天天看點

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(比賽通知群)

知識星球:不止算法