我编译自己的包比从存储库安装更好吗?

当从源编译或从存储库安装时,包性能是否不同? 是否有可能,在编译过程中,如果在您的系统上编译包,它将对您的系统“更加适应”(性能,稳定性)?

除非您在构建过程中进行了严格的优化,或者对正在构建的function进行了重大更改,否则对于非常复杂的程序,您不太可能看到任何性能优势。 即使经过严格的优化,您仍然只能看到最小的改进。 在大多数情况下,在Ubuntu上以这种方式构建应用程序没有任何实际优势。

如果你在系统上重新编译东西,你将无法获得任何性能提升,除非你的Ubuntu是高度自定义的,比如使用来自其他来源的大量核心库。

诀窍是所有为Ubuntu打包的都是在一个真正的 Ubuntu系统上构建的, 它使用你的相同软件包 。 这意味着建筑环境是100%相同的系统,所有库都有相同的绑定等,只有用户配置不同。 因此,当构建二进制包时,可以应用许多积极的优化,并且它们在您的系统上仍然有效。 这样,Ubuntu可以为用户提供性能最大化的包。

您自己编译的软件包具有更好性能的可能性非常低。 甚至可能它们的工作速度会变慢,因为在为Ubuntu存储库构建软件包时会手动触发许多默认情况下未启用的优化。

关于稳定性,推理是一样的。 因为包是在Ubuntu系统上构建的,它与您拥有完全相同的库 (假设您从存储库获得它们),它们的行为没有区别。

最后,在您自己构建应用程序时, 不要指望任何利润

但是,如果使用不是源自Ubuntu存储库的自定义,已修改库或核心软件包,则重建使用它们的应用程序可能会有所帮助。 然而,最有可能的差异将是如此之小以至于难以察觉,因此可能不值得麻烦。

一般没有,但这里和那里都有例外。

  1. 使用标志“-march = native -pipe -O2”从源代码编译Firefox 18似乎减少了页面加载期间无响应的那些小时段,但没有其他任何改变。 使用标志“-march = native -pipe -Os”进行编译使其在RAM中缩小了16.5MB。 它的启动速度明显更快,并且似乎占用较少的RAM,打开30多个选项卡,但所有菜单选项似乎都需要永远。
  2. 使用标志“-march = native -pipe -O2”从源代码编译OpenArena会将avg帧速率从28.7(timedemo结果)增加到从存储库安装的33.4。 这是一个很大的进步。

我从源代码编译的其他所有内容都有,运行大致相同,或者有时像crap那样中断/运行。

我是一名在R工作的统计学家。我使用的是双启动系统(Ubuntu / Windows 7)。 当我从Ubuntu存储库(r-base,r-base-dev,…)安装R时,它的性能非常糟糕! 运行某个脚本所花费的时间(计算循环中粒子的轨迹)比在Windows上长50%! 心灰意冷,我清除了Ubuntu提供的R版本,并为所有编译器( CFLAGSCXXFLAGSFFLAGSOBJCFLAGSFCFLAGS )编写了我自己的"-march=native -O3"标志,结果令人印象深刻…至少。 我的脚本运行速度是Windows 7的两倍。除此之外,有时,官方存储库包含史前版本的库,开发人员可能希望每次都编译新的库。

除此之外,我还编译了Linux内核,但收益更加适中(5%)。 所以它真的取决于软件,它使用你的本机架构获得多少等等。一些国际象棋引擎(如Stockfish)依赖于ssepopcnt指令,所以如果所有处理器的默认编译二进制插孔,最老的大师 -不支持处理器能够处理的新东西,考虑编译它。