c++ - OpenMP 临界区带来意想不到的性能提升

标签 c++ c performance openmp

为什么使用以下代码在执行时间方面有优势?

#pragma omp parallel for
for(i=0; i<size; i++)
{
  #pragma omp  critical
  {
    funcall1();
    funcall2();

    for(j=0;j<size2;j++)
    {
      funcall3();
     }

  }

}

它运行的是串行版本的两倍,但我不知道为什么

最佳答案

看起来第二个变量 j 可以进行范围优化,它有可能被展开。

关于c++ - OpenMP 临界区带来意想不到的性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207373/

相关文章:

c++ - C++中的字符比较

c++ - 多类编译错误

c - 错误: too few arguments to function 'set_new_node'

c - 带有生成的 C 代码的 DWARF DI?

c++ - 从 std 包装 C++ 功能有时是个坏主意?

c - 如何检查 char * 是否为空?

java - 对象大小和 Java 中的锁定性能之间有关系吗?

mysql - 单个数据库查询中的多个 sql 更新

javascript - 为什么触摸事件会延迟?

c++ - Win7 中的 Eclipse CDT (Juno) : Cannot find g++ in PATH, iostream 未解析和其他有趣的东西