Boost 隨機數庫:性能

很多情況下,性能是選擇隨機數生成器或分佈函數時需要考慮的重要因素。本節提供了 boost 庫中各種生成器和分佈的性能測試結果。

測試環境:Pentium Pro 200 MHz with gcc 2.95.2, Linux 2.2.13, glibc 2.1.2。速度的單位為兆隨機數每秒 (M rn/sec, million random numbers per second)。速度是由一個緊湊的循環測定的。

基本生成器

生成器 M rn/sec 每個隨機數所需時間 [微秒, usec] 相對於最快生成器的速度 [百分比]
rand48 5.38 0.183 61%
rand48 run-time configurable 1.48 0.677 17%
lrand48 glibc 2.1.2 1.19 0.843 13%
minstd_rand 2.39 0.318 35%
ecuyer1988 1.12 0.892 13%
kreutzer1986 3.87 0.258 43%
hellekalek1995 (inversive) 0.20 5.12 2%
mt11213b 6.07 0.165 68%
mt19937 6.06 0.165 68%
mt19937 original 5.33 0.188 60%
lagged_fibonacci607 8.90 0.112 100%
lagged_fibonacci4423 8.54 0.117 96%
lagged_fibonacci19937 7.49 0.133 84%
lagged_fibonacci23209 6.63 0.151 74%
lagged_fibonacci44497 4.01 0.250 45%

注意 lagged-Fibonacci 生成器產生的是浮點數,而其它的生成器產生整數。

分佈

[M rn/sec] minstd_rand kreutzer1986 mt19937 lagged_fibonacci607
uniform_smallint 1.26 1.55 1.93 -
uniform_01 1.79 1.88 3.03 7.74
uniform_real 1.74 1.56 2.34 6.62
geometric 0.593 0.629 0.753 0.916
triangle 0.97 1.02 1.35 1.31
exponential 0.849 0.828 0.887 1.53
normal (polar method) 0.608 0.626 0.738 0.755
lognormal 0.417 0.442 0.470 0.481
uniform_on_sphere 0.154 0.155 0.174 0.218

注意在生成均勻分佈的浮點隨機數時,lagged-Fibonacci 比 Mersenne-twister 至少快 2.5 倍;對於更複雜的分佈,這一優勢就不那麼明顯了。也請注意這些分佈尚未進行性能優化。


Valid HTML 4.01 Transitional

Revised 05 December, 2006

Copyright © 2001 Jens Maurer

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

中文版修訂:2008/6/25

Copyright © 2008 xiaq

在 Boost Software License, Version 1.0 的條款下發佈。(參看文件 LICENSE_1_0.txt 或在線副本 http://www.boost.org/LICENSE_1_0.txt)