想知道,鉴于下面的代码,有没有更好的方式编写代码来提高性能?
rootDir
答案 0 :(得分:4)
按照书面规定,您的代码未显示正确的声明a
,b
和c
。如果它们实际上是指针(包括声明为数组的函数参数)或指向指向结构的数组,请确保在可能的情况下使指针restrict
合格。这样可以使一个好的编译器可以向量化您的循环。
在与P__J__的答案链接的示例代码中,您可以看到restrict
的效果(以及删除后会发生的情况)。没有它,编译器将无法假设a
所指向的内存与b
或c
所指向的内存没有重叠,因此编译器无法加载b[i+1]
或{{1 }},直到存储c[i+1]
。这完全排除了以并行方式加载它们的情况,即从本质上避免了向量化。
否则,不,您的循环是最佳的。
答案 1 :(得分:3)
编译器在优化此类内容方面非常出色