我正在编写一份物理模拟代码,其中大量使用了随机数。我刚刚第一次对我的代码进行了剖析,所以我可能在读取输出时出现错误,但我发现这一行首先出现:
% cumulative self self total
time seconds seconds calls ms/call ms/call name
90.09 21.88 21.88 265536 0.08 0.08 std::mersenne_twister_engine<unsigned long, 32ul, 624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul, 2636928640ul, 15ul, 4022730752ul, 18ul, 1812433253ul>::operator()()
似乎意味着生成数值的生成器占据了90% 的时间。我之前写过一篇帖子询问在每个循环中不构建随机概率分布是否可以节省时间,但经过尝试和计时后并没有帮助 (Is defining a probability distribution costly? ) 。有没有优化随机数生成的常见选项?提前感谢您的回答,我的模拟(目前的状态)持续几天,因此减少90% 的计算时间将是一项重大进展。