【发布时间】:2012-04-27 19:50:04
【问题描述】:
我有一个可行的并行化解决方案。然而,并行化对执行时间的改善非常非常轻微。我认为这是因为我在循环中新建并删除了一些变量。我希望它是堆栈创建的,但是 Command 类是抽象的,并且必须保持抽象。我能做些什么来解决这个问题?如何减少花在这些非常长的循环上的时间???
#pragma omp parallel for reduction(+:functionEvaluation)
for (int i=rowStart;i<rowEnd+1;i++)
{
Model model_(varModel_);
model_.addVariable("i", i);
model_.addVariable("j", 1);
Command* command_ = formulaCommand->duplicate(&model_);
functionEvaluation += command_->execute().toDouble();
delete command_;
}
问题也可能出在其他地方!欢迎咨询!!
感谢和问候。
【问题讨论】:
-
有一个命令池?预分配命令?
-
你能更精确一点吗?您会看到 command_ 是根据 model_ 创建的,它是在循环内分配的堆栈。你能解释更多,甚至写一两行代码吗?谢谢!!
标签: c++ multithreading stack openmp