5

我目前正在权衡运行 Chromium 本地版本的潜在利弊。

我以前从未从源代码构建 Chromium,但我知道这是一个巨大的项目,编译要求繁重且耗时。

我以前曾涉足过这个想法,但出于性能方面的原因。具体来说:

  • Chromium 能否从 Profile Guided Optimization 中受益匪浅?
  • 与使用通用二进制构建相比,使用 GCC 原生 CPU 优化构建 Chromium 能否提供更多的边际性能优势?(特别是 Haswell 和 Broadwell 拱门)
  • 在本地构建 Chromium 时,还有什么其他方法可以提高整体性能或内存效率吗?

经过当时的一些研究,我最终得出的结论是,这不值得付出努力。

我确实记得几年前运行 Firefox 的 PGO 构建,而 Firefox 似乎仍然为运行 PGO 构建提供了不错的支持。但是,对于 Chromium,它似乎要复杂得多。

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

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

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

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

最后获得对硬件加速视频解码的支持可能值得在这里付出努力。现在我很好奇的是这样做时的性能考虑是什么。

tl;博士

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

1 回答 1

1

FWIW,我运行的是 Gentoo Linux,这意味着我系统上的所有内容都是从源代码编译的。我在使用自定义 cflags 从源代码构建 chromium 和使用也可用的二进制 google-chrome-stable 包之间交替进行。我确实注意到运行本地编译的 chromium 与 Google Chrome 的预打包二进制文件相比,性能有所提高。

现在,这是编译器优化的结果,还是 Google Chrome 和 Chromium 版本之间的差异(目前它们非常接近 - Google Chrome 55.0.2883.87 和 Chromium 55.0.2883.75),我不能说。但是改进已经足够了,我会回到 Chromium 并且可能会继续使用它一段时间。

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

于 2017-01-17T08:37:56.073 回答