gpt4 book ai didi

c++ - -fno-strict-aliasing 的性能影响

转载 作者:IT老高 更新时间:2023-10-28 21:45:50 26 4
gpt4 key购买 nike

是否有任何研究或一组基准显示性能由于在 GCC 中指定 -fno-strict-aliasing(或在其他编译器中等效)?

最佳答案

它会因编译器而异,因为不同的编译器以不同的攻击级别实现它。 GCC 对此相当激进:启用严格别名会导致它认为指针“明显”等同于人类(如 foo *a; bar *b = (bar *) a;) 不能使用别名,这允许进行一些非常激进的转换,但显然会破坏非精心编写的代码。由于这个原因,Apple 的 GCC 默认禁用严格别名。

相比之下,LLVM 甚至没有 严格的别名,而且,虽然这是计划中的,但开发人员表示他们计划在没有其他东西可以判断的情况下将其作为后备案例来实现等价。在上面的例子中,它仍然会判断 a 和 b 等价。如果无法以任何其他方式确定它们的关系,它只会使用基于类型的别名。

根据我的经验,严格别名的性能影响主要与循环不变的代码运动有关,其中类型信息可用于证明循环内加载不能对正在迭代的数组进行别名,从而允许它们拉出循环。 YMMV。

关于c++ - -fno-strict-aliasing 的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225741/

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