我的目標是找到用於將int轉換爲字符串(反之亦然)和解析的最快C++庫。高性能低延遲C++自定義字符串類
任何已經對C++性能進行過實驗的人都會很快意識到,與說STL int算術運算相比,STL的字符串類具有可怕的性能。
一些樣品基準從我的3.3 GHz英特爾,GCC,CentOS 5.5機:
memcpy 0.004000 microsec/op
atoi 0.025000 microsec/op
atof 0.133000 microsec/op
strtod 0.133000 microsec/op
atof 0.135108 microsec/op
(char) uchar 0.001801 microsec/op
(char) ushort 0.001801 microsec/op
cache accs 0.010505 microsec/op
maplookup 0.128534 microsec/op
add_int 0.002456 microsec/op
您可以快速查看該字符串操作將成爲任何高速通訊應用的瓶頸。
我已經找到了高性能字符串(列出)的其他庫,但我希望有人有類似的困難,並已達到一些解決方案,可能包括編寫自己的字符串類。
- http://bstring.sourceforge.net/
- http://code.google.com/p/stringencoders/
- http://www.and.org/vstr/comparison
- http://www.boost.org/doc/libs/1_46_1/doc/html/string_algo.html
嗯,你已經做了基準。但我的問題是:優化這門課真的很重要嗎?在實際字符串<->數字轉換中花費了大量時間(> 20%)?而且,爲什麼麻煩把數字數據作爲字符串發送?將它們以原生(或中間,但仍然是數字)表示方式發送將會更有效率 – 2011-04-04 16:55:48
您是否有一個應用程序,您已經對其進行了配置並確定了瓶頸處理字符串,或者您只是猜測它可能是在一些假設的應用程序中是瓶頸? – 2011-04-04 16:57:08
我想你會發現這不是一個真正的瓶頸。網絡延遲將使這些時間中的任何一個時間模糊幾個數量級。 – 2011-04-04 16:57:36