![]() |
1
5
在该基准站点上获胜的C++版本是
手动矢量化
对于x86,使用simd intrinsics(SSE、AVX或AVX512)
,例如使用
C++版本有一个为SIMD优化的循环条件:
Fortran只是使用OpenMP来实现自动并行化,而编译器的自动矢量化并不会创造出比手动调节循环条件更好的效果,因为手动调节循环条件可以继续执行源代码没有的冗余工作(因为这比更频繁地检查要便宜)。 有很多C和C++版本的程序和FORTRAN版本有类似的速度。 它们甚至对于C/C++源并不是手动矢量化的。 我不确定英特尔Fortran或其他编译器是否支持手动矢量化扩展。 |
![]() |
Megadardery · 如何测试两种算法并确定哪种算法更快? 7 年前 |
![]() |
em1031 · 查找上一期价值的最快方法? 7 年前 |
![]() |
Dusol · 使用多核时是否可能超出带宽限制? 7 年前 |
![]() |
ezekiel · C与Python/numpy的数学表现较差 7 年前 |
![]() |
Chris · OutOfMemoryError:GC开销限制超过标准 7 年前 |
|
user8477039 · 在Ruby/Rails中处理大型数据集导入 7 年前 |