我有一個並行化的工作解決方案。但是,執行時間通過並行化得到很小的改進。我認爲它來自我新的事實,並刪除循環中的一些變量。我希望它是堆棧創建的,但是Command類是抽象的,並且必須保持抽象。我能做些什麼來解決這個問題?如何改善花在這些非常長的循環上的時間?與openMP並行化 - 堆棧或堆變量
#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_;
}
這個問題也可能在別處!建議歡迎!
感謝和問候。
有一個命令池?預分配命令? – Anycorn 2012-04-16 13:18:03
你能更精確嗎?您會看到command_是根據model_創建的,該model_是在循環內部分配的堆棧。你能解釋一下,還是寫一行或兩行代碼?謝謝!! – octoback 2012-04-16 13:27:19