我正在使用boost和QuantLib生成一个包含随机数(标准正态分布)的“数组”。但是,我注意到计算性能不是很理想,并且速度比仅使用numpy的Python要慢得多。谁能给我一些建议? 非常感谢。
这是我的c ++代码:
using namespace QuantLib;
Array generateRandNumbers(unsigned long seed, Size n) {
Array res(n);
boost::mt19937 rnd(seed);
boost::normal_distribution<> normDist(0, 1);
boost::variate_generator<boost::mt19937&, boost::normal_distribution<>> generator_norm(rnd, normDist);
BOOST_FOREACH(Real& x, res) x = generator_norm();
return res;
}
int main()
{
unsigned long seed = 1;
Size n = 1e6;
boost::timer timer;
Array randNumbers = generateRandNumbers(seed, n);
std::cout << timer.elapsed() << std::endl;
return 0
}
这是我的python代码:
import numpy as np
import time
ts = time.time()
res = np.random.normal(0, 1, 1000000);
print(time.time() - ts)
答案 0 :(得分:-1)
您问过:
有人可以给我一些建议吗?
在这里编程语言不太可能成为主要因素。因此,这个问题归结为其他参数:
关于最后一点-确保进行比较时,您始终使用优化的发行版。