假设您有一个并行for循环实现,例如ConcRT parallel_for,是否最好将所有工作放在一个for循环体中?
举个例子:
for(size_t i = 0; i < size(); ++i)
{
DoSomething(a[i], b[i]);
}
for(size_t i = 0; i < size(); ++i)
{
DoSomethingElse(a[i], b[i]);
}
和....相比
for(size_t i = 0; i < size(); ++i)
{
DoSomething(a[i], b[i]);
DoSomethingElse(a[i], b[i]);
}
第二种变体将是显而易见的方法,但是在并行处理方面可能还有其他考虑因素?
我只是用parallel_for的情况选项1比第二个更快(平均约30ms到约38ms)。但是我在对并行算法进行基准测试方面并不擅长,所以也许我测量错了。无论如何,不幸的是我不能发布这个观察的实际代码示例。
是否有一些经验法则、其他注意事项或只是尝试和基准测试?