【发布时间】:2019-07-26 21:07:05
【问题描述】:
我正在用
绘制随机布尔数std::mt19937 rng;
std::uniform_int_distribution<int> dis(0, 1);
在极端情况下,绘制这些数字可能会占用我进程的 CPU 时间的 40%。有什么办法可以加快速度吗?
【问题讨论】:
-
你可以简单地让你的循环并行。
-
如何在 0 到 2^64-1 之间绘制一个数字,然后一次使用一个位,连续 64 次,然后再计算另一个随机数?
-
如果您只需要一个 50/50 随机数生成器,只需使用
rand。它速度很快,而且你没有将它用于任何加密。 -
@Hoodi 循环只是为了表达它将被多次使用,因为这就是我开始对事物进行基准测试的方式。实际上,我的流程不能轻易并行化(或者说它已经是并且不能进一步并行化)
-
没有循环,我们就缺乏上下文。剩下的两行代码本身不会占用 40% 的 CPU 时间。