单个迭代使用MS concurrency::parallel_for()的性能
Performance with MS concurrency::parallel_for() for a single iteration
我想在试图实现parallel_for
的并发性时,有许多关于性能问题的问题。甚至我也注意到,在尝试使用parallel_for
并行化内存访问扩展for
循环时,性能下降。我正在研究的应用领域是图像处理。
令人惊讶的是,即使我创建一个由parallel_for
处理的单迭代循环,也可以看到这种性能下降!!
我的意思是我有一个代码块,它在7秒内执行,没有任何并行
<code block without parallelisation> //(Executes in 7 seconds)
如果我将上面的代码包含在parallel_for
循环中,性能将增加到18秒。
parallel_for(0,1,[&](int random_var){ //(Executes in 18 seconds)
<code block without parallelisation>
});
我完全不能理解这种行为。是什么导致了如此巨大的处理开销。在这种情况下,我认为不应该有任何内存带宽相关的问题?如果您需要我所面临的这个特定问题的更多信息,请告诉我。
因为即使在parallel_for中进行一次迭代,它也会在线程中执行代码。所以主线程会有抢占。还有其他线程相关的簿记工作,这将花费时间。
相关文章:
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 如何在C++中从两个单独的for循环中添加两个数组
- 在Linux for Windows上编译C++代码时出错
- OpenMP阵列性能较差
- 调用专用模板时出错"no matching function for call to [...]"
- 递归列出所有目录中的C++与Python与Ruby的性能
- 与多个 for 循环与单个 for 循环 wrt 相关的性能从多映射获取数据
- 基于范围的 for 循环range_declaration中各种说明符之间的性能差异
- 虚拟函数调用的性能作为 for 循环中的上限
- 在 C++ 中使用 OpenMP 并行化两个 for 循环不会提供更好的性能
- openMp的多个独立for循环的性能问题
- 为什么具有多线程的for循环的性能不如单线程
- 基于范围的 for 循环是否有利于性能
- 嵌套for循环的奇怪性能问题
- 为什么我在所有像素的双for循环中使用SDL2和SDL_RenderCopy得到糟糕的性能
- 在'for-loop'中使用'break'的性能影响
- 并行化for循环不会带来性能增益
- c++中嵌套for循环的性能评估