【发布时间】:2010-11-10 22:41:27
【问题描述】:
我想看看程序员可以用 C 做什么,这可以决定生成的目标文件的性能和/或大小。
例如,
1. 将简单的 get/set 函数声明为内联可能会提高性能(以更大的占用空间为代价)
2.对于不使用循环变量本身的值的循环,倒数到零而不是倒数到某个值
等等
看起来编译器现在已经发展到根本不需要“简单”技巧(如上述两点)的水平。 Appropriate options during compilation do the job anyway.哎呀,我还在这里看到了关于编译器如何处理递归的帖子——这非常有趣!那么我们在 C 级别还剩下什么要做呢? :)
我的具体环境是:GCC 4.3.3 re-targeted for ARM architecture (v4)。但是也欢迎对其他编译器/处理器的响应,并将被咀嚼。
PS:我的这种方法违背了通常的“代码优先!然后是基准测试,然后最后优化”的方法。
编辑:恰巧,我在发完问题后发现了一个类似的帖子:Should we still be optimizing "in the small"?
【问题讨论】:
-
通常的“代码优先!然后基准测试,最后优化”方法有什么问题?
-
这没有错 - 它应该是优化的方式。我的动机是检查我是否可以实现重构代码的工具(在完成分析之后),以帮助开发人员快速更改性能和/或区域。想象一个 Eclipse 插件(或 vim 脚本),它突出显示循环并提供选项来表示、展开它们或切换内部和外部循环。我应该在帖子中澄清这一点,对此感到抱歉。并感谢您的链接!
标签: c optimization gcc micro-optimization