linux – 根据性能考虑编译Chrome / Chromium

我目前正在权衡运行Chromium本地构建的潜在利弊.

我以前从未在源代码中构建过Chromium,但我知道这是一个庞大的项目,编译要求非常庞大且耗时.

我之前已经涉足过这个想法,但其原因主要集中在表现上.具体来说:

> Chromium可以从配置文件引导优化中获益吗?
>使用GCC本机CPU优化构建Chromium可以提供超过使用通用二进制构建的边际性能优势吗? (特别是Haswell和Broadwell拱门)
>在本地构建Chromium时,还有什么方法可以提高整体性能或内存效率吗?

经过一段时间的研究后,我最终得出的结论是,这不值得付出努力.

我确实记得几年前运行PGO版本的Firefox,Firefox似乎仍然为运行PGO构建提供了不错的支持.但是,在Chromium的情况下,它看起来要复杂得多.

Chromium似乎对PGO构建有一些原生支持.不幸的是,该支持看起来完全是Windows特定的.不支持其他操作系统的PGO构建,并且由于所有Chromium独特的构建复杂性,在没有这种帮助的情况下尝试PGO构建似乎并不值得.

如果有人知道有人在Linux上成功尝试过这个,我会非常有兴趣看到结果.

关于GCC CPU优化,我的理解是这里提供的好处几乎总是微不足道的,但是随着Chromium的复杂程度,它似乎比大多数应用程序更能从中受益更多.

仅仅GCC优化仍然可能不值得,但我考虑再次这样做的原因是我也可以利用补丁来启用VA-API:
https://aur.archlinux.org/packages/chromium-vaapi/

最后获得对硬件加速视频解码的支持可能值得付出努力.现在我感到好奇的是这样做时的性能考虑因素.

TL;博士

>当使用本地CPU优化本地编译的Chromium构建时,我可以期待任何明显的性能差异吗?
>在Linux上是否可以使用Chromium的PGO,如果是这样,实际分析的最佳方法是什么?

最佳答案 FWIW,我运行Gentoo Linux,这意味着我的系统上的所有内容都是从源代码编译的.我已经交替建立了从源代码构建铬,使用自定义cflags,以及使用二进制google-chrome-stable软件包.我注意到运行本地编译的铬与谷歌Chrome的预打包二进制文件的性能提升.

现在,无论是编译器优化的结果,还是谷歌Chrome和Chromium版本之间的差异(目前它们彼此非常接近 – 谷歌Chrome 55.0.2883.87和Chromium 55.0.2883.75),我不能说.但是这种改进足以让我回到Chromium并且可能会留下一段时间.

从源代码构建它的缺点(特别是如果在操作系统上更新软件包意味着重建它)是它频繁转换,并且在带有SSD的i7 8Gb笔记本电脑上构建它需要将近两个小时.因此,它将大多数系统更新转变为一个漫长而缓慢的过程 – 这就是我在一两年前切换到二进制构建的原因.

点赞