我想看看程序员可以用 C 做什么,这可以确定生成的目标文件的性能和/或大小。
For e.g,
1. 将简单的 get/set 函数声明为内联函数可以提高性能(但代价是占用空间更大)
2. 对于不使用循环变量本身值的循环,向下计数到零,而不是向上计数到某个值
ETC。
看起来编译器现在已经达到了根本不需要“简单”技巧(如上面两点)的水平。无论如何,编译过程中适当的选项可以完成这项工作。哎呀,我还在这里看到了有关编译器如何处理递归的帖子 - 这非常有趣!那么我们在 C 级别还需要做什么呢? :)
我的具体环境是:针对 ARM 架构(v4)重新定位的 GCC 4.3.3。但对其他编译器/处理器的回应也很受欢迎,并将被仔细研究。
PS:我的这种方法违背了通常的“首先编写代码!然后进行基准测试,然后finally优化”的方法。
Edit:就像发生的那样,我在发布问题后发现了类似的帖子:我们还应该“从小处”进行优化吗? https://stackoverflow.com/questions/763656/should-we-still-be-optimizing-in-the-small
我能想到的编译器可能不会优化的一件事是“缓存友好性”:如果您以行主顺序迭代二维数组,请确保您的内部循环跨列索引运行以避免缓存抖动。让内部循环运行在错误的索引上可能会导致巨大的性能损失。
这适用于所有编程语言,但如果您使用 C 进行编程,性能可能对您来说至关重要,因此它尤其重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)