Jos*_* H. 5 linux gcc compiler-optimization chromium pgo
我目前正在权衡运行Chromium本地版本的潜在利弊。
我以前从未从源代码构建过Chromium,但我知道这是一个庞大的项目,并且编译要求非常繁琐且耗时。
我之前涉猎过这个想法,但是出于性能方面的考虑。具体来说:
经过当时的一些研究,我最终得出结论,这是不值得的。
我确实记得几年前运行过Firefox的PGO构建,并且Firefox似乎仍然为运行PGO构建提供了不错的支持。但是,对于铬来说,它似乎要复杂得多。
Chromium似乎确实对PGO构建提供了一些本机支持。不幸的是,该支持似乎完全是Windows特有的。不支持用于其他操作系统的PGO构建,并且由于Chromium的所有独特构建复杂性,如果没有这种帮助,尝试进行PGO构建似乎不值得。
如果其他人知道在Linux上成功尝试过此操作的人,我将非常有兴趣看到结果。
关于GCC CPU优化,我的理解是,这里提供的好处几乎总是微不足道的,但是由于Chromium多么复杂,因此可以从大多数应用程序中受益更多。
仅进行GCC优化可能仍然不值得付出努力,但我考虑再次进行此操作的原因是,我还可以利用补丁来启用VA-API:https : //aur.archlinux.org/packages / chromium-vaapi /
最终,获得对硬件加速视频解码的支持可能是值得的。现在我很好奇的是执行此操作时要考虑的性能。
FWIW,我运行 Gentoo Linux,这意味着我系统上的所有内容都是从源代码编译的。我交替使用自定义 cflags 从源代码构建 chromium,以及使用也可用的二进制 google-chrome-stable 包。我确实注意到,与 Google Chrome 的预打包二进制文件相比,运行本地编译的 chromium 的性能有所提高。
现在,我不能说这是编译器优化的结果,还是 Google Chrome 和 Chromium 版本之间的差异(目前它们非常接近 - Google Chrome 55.0.2883.87 和 Chromium 55.0.2883.75)。但改进已经足够了,我会回到 Chromium,并且可能会继续使用它一段时间。
从源代码构建它的缺点(特别是如果更新操作系统上的软件包意味着重建它)是它频繁旋转,并且在带有 SSD 的 i7 8Gb 笔记本电脑上构建它需要接近两个小时。因此,它将大多数系统更新变成一个漫长而缓慢的过程 - 这就是为什么我在一两年前转向二进制构建的原因。