It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center。
已关闭8年。
二进制文件的大小如何影响执行速度?具体来说,我说的是使用gnu或intel编译器将ANSI-C编写的代码翻译成机器语言。二进制文件的目标平台是运行Intel或AMD多核CPU且运行Linux操作系统的现代计算机。该代码可能使用openMP并行执行数值计算,并且二进制文件可能具有几个兆字节。
请注意,在任何情况下,执行时间都将比加载代码和库所需的时间长得多。我想到了用于求解大型常微分方程组的非常特殊的代码,用于模拟动力学方程。对于中等系统大小,动力学方程通常受CPU限制,但也可能成为内存限制。
我问小二进制大小是否应该成为高效代码的设计准则,或者我是否总是可以优先考虑显式代码(这最终会重复可作为函数实现的代码块)和编译器优化(例如循环展开等)。
我知道配置技术以及如何将其应用于特定问题,但是我想知道可以在多大程度上做出一般性说明。
已关闭8年。
二进制文件的大小如何影响执行速度?具体来说,我说的是使用gnu或intel编译器将ANSI-C编写的代码翻译成机器语言。二进制文件的目标平台是运行Intel或AMD多核CPU且运行Linux操作系统的现代计算机。该代码可能使用openMP并行执行数值计算,并且二进制文件可能具有几个兆字节。
请注意,在任何情况下,执行时间都将比加载代码和库所需的时间长得多。我想到了用于求解大型常微分方程组的非常特殊的代码,用于模拟动力学方程。对于中等系统大小,动力学方程通常受CPU限制,但也可能成为内存限制。
我问小二进制大小是否应该成为高效代码的设计准则,或者我是否总是可以优先考虑显式代码(这最终会重复可作为函数实现的代码块)和编译器优化(例如循环展开等)。
我知道配置技术以及如何将其应用于特定问题,但是我想知道可以在多大程度上做出一般性说明。
最佳答案
CPU仅执行代码的一部分,因此代码的速度以及代码在其中的移动量决定了速度。
如果您有10Mb的代码,而前9Mb在启动时仅执行一次,那么这9Mb的速度慢还是90Mb或90kb都无关紧要。如果CPU将其99.99%的时间花费在一些小的紧密循环中以进行一些非常有效的计算,那么它将很快,如果它必须一次又一次地运行100,000行代码,则速度可能会慢得多。
优化是要了解CPU大部分时间都花在哪里,并使该代码在获得答案所需的CPU周期数内尽可能高效。有时,这可能意味着在其外部添加大量额外的“准备”代码,以使主体的工作更加容易/快捷。
在某些系统中,二进制大小(EG嵌入式设备)是主要关注的问题,但在其他系统中,它几乎是完全不相关的。
另请参阅:http://www.codeproject.com/Articles/6154/Writing-Efficient-C-and-C-Code-Optimization