gpt4 book ai didi

性能或代码大小的 C 编码实践 - 超出编译器的范围

转载 作者:太空狗 更新时间:2023-10-29 14:50:51 24 4
gpt4 key购买 nike

我想看看程序员可以用 C 做什么,这可以确定生成的目标文件的性能和/或大小。

例如,
1. 将简单的 get/set 函数声明为内联可能会提高性能(以更大的占用空间为代价)
2.对于不使用循环变量本身的值的循环,倒数到零,而不是数到某个值等

看起来编译器现在已经发展到根本不需要“简单”技巧(如上面两点)的水平。汇编过程中适当的选项无论如何都可以完成这项工作。哎呀,我还在这里看到了关于编译器如何处理递归的帖子——这非常有趣!那么我们在 C 级别上还剩下什么? :)

我的具体环境是:GCC 4.3.3 re-targeted for ARM architecture (v4)。但也欢迎对其他编译器/处理器的回应,并将予以讨论。

PS:我的这种方法违背了通常的“先编写代码!然后进行基准测试,最后优化”的方法。

编辑:正好,发了问题后发现了一个类似的帖子:Should we still be optimizing "in the small"?

最佳答案

我能想到的编译器可能不会优化的一件事是“缓存友好性”:如果您以行优先顺序遍历二维数组,比如说,确保您的内部循环运行列索引以避免缓存抖动。让内部循环运行错误的索引可能会导致巨大的性能损失。

这适用于所有编程语言,但如果您使用 C 语言编程,性能可能对您至关重要,因此它尤为重要。

关于性能或代码大小的 C 编码实践 - 超出编译器的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130290/

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