C++の単純な機能のベンチマークを取るのがちょっと楽しくなってきてる私ですが、なんだかよくわからなくなってきました。
単純なループで測定した場合と、自作のタスクシステムに組み込んだ時に測定した場合で、全然速度が違うんですよ。差が開いたり狭まったり。
やっぱ最適化で色々省略されてたせいかなぁ。
ちぅわけで、自作タスクシステムに組み込んだ場合の数値を載せとく。
環境と条件
Core2Duo E6600(2.4GHz) / WinXP / VC++2008EE
タスクの数 1,000
ループ回数 10,000
単位 ms
最大限最適化
使用データは前と同じ
MultiByteToWideChar | 1,000 |
fast_char2wchar | 100 |
fast_char2wcharのほうが10倍速い。単純ループだと6倍強だった。
標準atoi | 610 |
fast_atoi | 120 |
標準atof | 5,620 |
fast_atof | 650 |
fast_atof32 | 335 |
fast_atoiは標準と比べて5倍。単純ループの時は4.4倍だった。 fast_atofは標準と比べて8.6倍。単純ループの時は10倍だった。こっちは倍率下がってる。
float | 10 |
S_Float | 8 |
int | 8 |
・・・なにこれ。
この値はやっぱり信用できないなぁ。
fast_atof32以外が綺麗に10の倍数だけど、ホントにこの結果になった。2~3度取ったけど+-1程度の差が有った程度。
演算子オーバーロードはおいとくとして、使い方によって速度比が変わるってのもなんか違う気がするけども、とりあえずはfast_~系の自作関数はやっぱり速いと言うことでいいや。
・・・このエントリーの意味無いな・・・
で、ホントにやりたかったベンチマークは次のエントリーなんですよ。