ベンチマークいろいろ。

C++の単純な機能のベンチマークを取るのがちょっと楽しくなってきてる私ですが、なんだかよくわからなくなってきました。

単純なループで測定した場合と、自作のタスクシステムに組み込んだ時に測定した場合で、全然速度が違うんですよ。差が開いたり狭まったり。
やっぱ最適化で色々省略されてたせいかなぁ。

ちぅわけで、自作タスクシステムに組み込んだ場合の数値を載せとく。

環境と条件
Core2Duo E6600(2.4GHz) / WinXP / VC++2008EE
タスクの数 1,000
ループ回数 10,000
単位 ms
最大限最適化
使用データは前と同じ

半角限定マルチバイト文字→ワイド文字変換

MultiByteToWideChar 1,000
fast_char2wchar 100

fast_char2wcharのほうが10倍速い。単純ループだと6倍強だった。

atoi / atof

標準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_~系の自作関数はやっぱり速いと言うことでいいや。

・・・このエントリーの意味無いな・・・

で、ホントにやりたかったベンチマークは次のエントリーなんですよ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

認証のために問題を解いて下さい * Time limit is exhausted. Please reload CAPTCHA.