【发布时间】:2012-10-07 21:26:49
【问题描述】:
二进制文件的大小如何影响执行速度?具体来说,我说的是用 ANSI-C 编写的代码,使用 gnu 或 intel 编译器翻译成机器语言。二进制文件的目标平台是运行 Linux 操作系统的具有英特尔或 AMD 多核 CPU 的现代计算机。该代码可能使用 openMP 并行执行数值计算,二进制文件可能有几兆字节。
请注意,在任何情况下执行时间都将远大于加载代码和库所需的时间。我想到了一些非常具体的代码,用于求解大型常微分方程系统,以模拟动力学方程,对于中等规模的系统,这些方程通常受 CPU 限制,但也可能受内存限制。
我在问小二进制大小是否应该成为高效代码的设计标准,或者我是否总是可以优先考虑显式代码(最终重复可以作为函数实现的代码块)和编译器优化,例如循环展开等.
我知道分析技术以及如何将它们应用于特定问题,但我想知道可以在多大程度上做出一般性陈述。
【问题讨论】:
-
这太宽泛了。代码大小与其速度或性能之间没有 1:1 的关系。
-
一般来说这不是问题,除非您的可执行文件的运行时间很短,或者二进制文件太大而被分页。
-
如果您要问的问题如此广泛,几乎可以肯定您所从事的领域并不值得考虑这种优化水平。
-
如果您非常关心性能,为什么不使用分析器?如果大小确实是一个因素,那么分析器应该可以帮助您解决这个问题。
-
@highsciguy:当您的分析器报告包含代码的地址上的多个缓存未命中时,我想。第二个影响是,即使代码永远不会被驱逐,它占用的缓存越多,其他所有内容的可用缓存就越少。你期待什么样的概括,“如果代码小于可用缓存就好了”? ;-)
标签: c performance numerical