编译还是使用预建二进制文件性能?


11

如果我手动为将要在其上使用的实际计算机编译软件组件的源,那么与是否在其他平台上为许多不同体系结构编译源相比,性能会更好(更快)?我下载了一些不错的结果编译源,我想知道这是否是由于编译而不是下载预先编译的二进制文件而导致的,软件更新通常就是这种情况。


2
为与许多体系结构兼容而进行编译可能会消除某些优化,而对于单个体系结构进行编译时可能会进行某些优化。
罗伯特·哈维

1
除了更具针对性(这几乎总是有益的)之外,您可能还会在编译器之间遇到很大的差异-不同的编译器支持不同的优化,有时性能瓶颈可能会被一个优化,而另一个则无法优化。
Daniel B

Answers:


8

在许多(如果不是大多数)情况下,是的。这是因为编译器可以生成针对该特定CPU和环境优化的本机代码。该代码更具针对性。


7

从源代码进行编译可为您提供一种以特定平台所需的方式设置编译器标志的优势。下载使用与您的设置完全相同的设置编译的程序包不会有任何区别,但是更改默认设置可以带来很大的改进。

例如,如果为下载提供的二进制文件经过编译(有意或无意)进行调试,则启用更积极的优化将在几乎所有情况下提高性能。另一方面,如果将编译后的代码进行了最大程度的优化,则不会有任何区别。


因此,我的编译工作可能不会徒劳。我将源代码下载到mod_jk并进行了编译,它的运行速度非常快,我想知道这是否归因于手动编译。谢谢你的回答。
尼古拉斯

1

这实际上取决于所使用的两个编译器和编译器标志。通常,如果配置正确,则本地计算机上的编译器和标志设置更适合您的特定计算机。

但是,例如,如果预编译的二进制文件恰好是使用更好的优化编译器(或基准特别设计的,该基准通过针对该特定代码段进行了调整的标志而设计的,并且很幸运地适合于您的系统),则与您的系统,那么系统上的任何编译器实际上都可能产生较差的性能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.