使用专有的 C++ 编译器在我的旧机器中编译内核会提高性能吗?

使用专有的 C++ 编译器在我的旧机器中编译内核会提高性能吗?

我正在寻找一种可以让我的旧笔记本电脑从大学时代开始提速的东西。我听说我可以重新编译内核来总体上稍微提高性能。但在那台笔记本电脑中仍然有一个(现在我猜有些过时的)英特尔编译器的学生许可证。

我不确定原因,但英特尔编译器使可执行文件明显比 GNU 版本更快(也许它们在英特尔 CPU 中使用了秘密扩展?)。我想知道使用该专有编译器编译内核是否会带来更明显的速度性能。

另外,我可以自己编译系统的哪些其他关键部分以获得更好的总体性能?

答案1

我不能代表 Linux 内核开发人员说话(也没有迹象表明这是您正在谈论的 Linux 内核,但我假设它是),但在 OpenBSD(我更熟悉)上,甚至移动到新版本同一个编译器的这不是您想要“就那样”做的事情。

内核是一个复杂的软件,开发它并使用特定的工具链测试它对于确保正确运行非常重要。

新版本的编译器有更改(或者它不会是新版本),这些更改可能会在编译的代码中引入细微的差异。开发人员需要确保引入的差异不会导致系统中最核心的软件部分(内核)出现故障。

此外,内核源代码不是符合标准的 C 代码,并且 Linux 内核使用(或至少曾经使用)仅存在于 GCC 工具链中的扩展。我clang尝试使用它(现在是许多 OpenBSD 系统上的默认编译器)进行编译时至少存在最初的问题。搬到这里icc可能会迈出更大的一步。

在 OpenBSD 上,用户甚至灰心编译自己的自定义内核,其中包括更改默认的单个编译器标志,因为当在开发人员支持的通用内核中添加或删除组件时,调试失败会变得更加困难。

简而言之,我会推荐不是尝试用icc.


如果某个特定的应用程序对您来说运行缓慢,您显然可以尝试重新编译它,icc看看是否可以加快速度。我编译开源代码的经验icc是,某些应用程序似乎是专门为开源编译器工具链编写的(因为这是开发人员使用的),并且无法使用英特尔编译器进行干净的编译。

其他建议包括将硬盘升级到更快的硬盘和/或向系统添加更多 RAM。与使用“更好”的编译器重新编译相比,这些改进可能会给您带来更全面的性能提升,特别是如果您使用的应用程序受 I/O 限制(这将受益于升级的硬盘驱动器)。

相关内容