乱数生成の速度
乱数が必要になったが、速度的なボトルネックになりそうな気がしたので、いくつかの乱数生成関数の速度を調査することにした。実行コードはこんな感じ(random.cpp)で、100000回乱数を生成する。
関数 | 所要時間(秒) | 速度比 |
---|---|---|
rand | 0.0063734 | x1.00 |
RtlRandomEx | 0.0270574 | x4.25 |
boost::mt19937 | 0.0017343 | x0.27 |
乱数の精度については私はまるで解らないし、そもそもどうでもいいので判断しないが、とにかくRtlRandomExは遅い。でもって標準関数よりも速いメルセンヌツイスターにワロタ。
(追記)ずいぶんとトンチンカンなタイマーを使っていたので修正しました。修正ついでに、表記を10回実行した結果の平均値にしました。