我使用英特爾TBB parallel_for時加快for循環做一些計算:更高的核心負載英特爾TBB
tbb::parallel_for(tbb::blocked_range<int>(0,ListSize,1000),Calc);
Calc是一個類的對象doCalc
class DoCalc
{
vector<string>FileList;
public:
void operator()(const tbb::blocked_range<int>& range) const{
for(int i=range.begin(); i!=range.end();++i){
//Do some calculations
}
}
DoCalc(vector<string> ilist):FileList(ilist){}
};
大約需要當我使用for循環的標準串行格式時約60秒, 20秒時,我使用TBB的parallel_for完成工作。使用標準版時,我的i5 CPU的每個核心的負載大約爲15%(根據Windows任務管理器)和非常不均勻的,大約。使用parallel_for時爲50%且非常均勻。
我想知道使用parallel_for時是否有可能獲得更高的核心負載。除了grain_size還有其他參數嗎?如何在不改變for循環內的操作的情況下提高parallel_for的速度(這裏是//在上面的代碼示例中進行一些計算)。