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

Fed*_*TIK 6 performance package-management compiling

从源代码编译或从存储库安装的包性能是否有所不同?是否有可能,在编译过程中,该软件包将“更适应”(性能、稳定性)您的系统,如果它是在其上编译的?

dob*_*bey 8

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


Raf*_*lak 7

你会不会,如果你重新编译你的系统上的东西,除非你的Ubuntu是高度定制的,就像使用了很多核心库从其他来源获得任何性能提升。

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

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

关于稳定性,道理是一样的。因为软件包是在 Ubuntu 系统上构建的,它具有与您完全相同的库(前提是您从存储库中获取它们),所以它们的行为没有区别。

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

但是,如果您使用不是来自 Ubuntu 存储库的自定义、修改的库或核心包,则重建使用它们的应用程序可能会有所帮助。但是,很可能差异很小以至于难以注意到,因此可能不值得麻烦。


小智 5

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

除此之外,我还编译了 Linux 内核,但收益要小得多(5%)。所以它真的取决于软件,它通过使用你的原生架构获得多少收益等。一些国际象棋引擎(比如 Stockfish)依赖ssepopcnt指令,所以如果默认编译的二进制文件——所有处理器的杰克,最古老的大师——没有支持您的处理器能够提供的酷炫新东西,请考虑编译它。