gpt4 book ai didi

performance - 不要指针抑制编译器优化?

转载 作者:行者123 更新时间:2023-12-04 15:19:28 25 4
gpt4 key购买 nike

我试图将一个数组传递给一个子程序,在子程序中声明为一个假定的形状数组。这给了我一些问题,我可以通过传递指针来解决这些问题。

但是一些声誉很高的用户在评论中告诉我:

Adding pointer is also a reasonable way of telling the compilers optimiser that it doesn't have to do any work today.



任何人都可以对此提供简短的解释吗?该语言是 Fortran 95,但我相信这适用于其他语言。

最佳答案

是的,Fortran 编译器必须假设指针可以与其他指针和 target 变量别名。

如果你有指针数组 ab 那么在

  a(i) = a(i) + b(i)

编译器必须假设这两个数组可能部分重叠,并且必须禁止某些优化,因为更改 a 的值可能会更改某个未知索引处的 b 的某些值。

另请参阅 C restrict 关键字和 Is Fortran easier to optimize than C for heavy calculations? 中更彻底的讨论。不值得重复所有关于在那里提出的指针别名的观点。

IanH 的评论是故意的,可能有点过于强烈,但其中有很多道理。

关于performance - 不要指针抑制编译器优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41050770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com