【问题标题】:Compiling Chrome/Chromium with performance considerations使用性能考虑编译 Chrome/Chromium
【发布时间】:2016-10-18 15:04:10
【问题描述】:

我目前正在权衡运行 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/chromium-vaapi/

最终获得对硬件加速视频解码的支持可能是值得的。现在我很好奇的是这样做时的性能注意事项。

tl;博士

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

【问题讨论】:

    标签: linux gcc chromium compiler-optimization pgo


    【解决方案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 笔记本电脑上构建它需要将近两个小时。所以它把大多数系统更新变成了一个漫长而缓慢的过程——这就是我在一两年前切换到二进制版本的原因。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2011-01-14
      • 2012-07-25
      • 2011-08-05
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多