我的问题是如何在使用boost :: math :: pdf和boost :: math :: cdf时减少开销?似乎每次我需要计算pdf或cdf时,在计算cdf / pdf之前,boost会经历几个语句。通过逐步调用pdf或cdf可以看到这一点。 (即boost :: math :: cdf(s,x);)当需要在模拟中访问这些函数时,这似乎非常低效(500,000 + = 5000抽奖* 100贷款)。提前致谢
代码的相关部分是: 主要执行部分:
for (int i = 0;i < NumSim;i++) {
for (int j = 0;j < NumLoans;j++) {
double Sum = 0;
for (int T = 0;T < NumLoans;T++) {
Sum = Sum + RndNumbers[i][T] * CholeskyMatrix[j][T];
}
CorrelatedRndNumbers[i][j] = Stats.NormCDF(Sum);
}
}
.h文件
class clStats
{
public:
clStats(void);
~clStats(void);
double NormCDF(double x);
double NormPDF(double x);
private:
boost::math::normal s;
};
.cpp文件
clStats::clStats(void)
{
}
clStats::~clStats(void)
{
}
double clStats::NormCDF(double x) {
return boost::math::cdf(s,x);
}
double clStats::NormPDF(double x) {
return boost::math::pdf(s,x);
}