驳斥 “uBlock Origin 不如 Adguard 高效”的说法 - fang5566/uBlock GitHub Wiki

更准确来说,为了驳斥 @christianbutehttps://twitter.com/christianbute/status/893462816270815232 里的说法,我逐字引用了以下两条推文:

根据我的测试,@MicrosoftEdge 的最佳广告和恶意软件过滤器是 AdGuard,其他的都只会让性能恶化。

是的,甚至 uBlock Origin 也会减慢我的浏览体验。自带设置或自定义列表都是,和这没关系。其他的就不想提了。

很遗憾我没用 Windows,所以没法在 Microsoft Edge 上调查这个说法。但 Microsoft Edge 和 Chromium 上的扩展用的是相同的代码,至少我可以在 Chromium 做一番基准测试。

下面是我客观的测量情况,基准测试使用的是 Linux 64-bit 的 Chromium 59:

uBO 1.13.8

  • 默认设置和列表
  • 所有列表均保持最近更新

Adguard 2.6.7

  • English + Spyware 过滤规则
  • 禁用“允许搜索广告和网站自我推广”
  • 所有列表均保持最近更新

复现步骤如下:

  1. 只开启 Chromium 里其中一个过滤工具
    • 只打开固定的扩展标签页 + 一个新标签页
    • 不安装其他扩展
  2. 打开 Chromium 的任务管理器,等待执行扩展垃圾收集
  3. 打开扩展的后台页面,选择“性能”面板
  4. 点击性能面板的“记录”按钮
  5. 选择浏览器里已打开的“新标签页”
  6. 右键点击包含 20 个标签页的书签文件夹(参见下方),选择“打开所有书签”
  7. 等待所有标签页加载完毕
  8. 一个接一个激活新打开的标签页
  9. 点击性能面板的“停止”按钮
  10. 将“性能”面板里面的测试结果截图

针对“内存占用”的基准测试:所有步骤都相同,除了不打开扩展的开发工具,并且只考虑任务管理器。步骤 8 后等待至少 2 分钟再将任务管理器截图。

书签栏的书签文件夹所包含的 20 个标签页(根据去年 Hacker News 精选出的热门网页,也就是“现实生活常用的网页”):

测试结果:

CPU 使用率(参见下面图片):

  • uBlock Origin(上方):4,662.3 毫秒(3,403.6 毫秒 + 1,258.7 毫秒)
  • Adguard(下方):14,424 毫秒(11,638.8 毫秒 + 2,785.2 毫秒)

c

所有标签页加载完毕后的内存占用值(参见下面图片,上方是在浏览器启动 + 垃圾收集以及所有标签页打开之前):

  • uBlock Origin(左侧):1,254 MB
  • Adguard(右侧):1,535 MB

d

结论:

Microsoft Edge 上的两个扩展和 Chromium 上的一样,用的是相同的代码,所以预计它们相对的性能测试结果也是一致的。考虑到 uBlock Origin 还得额外消耗 1/3 的 CPU 资源来完成比 Adgurad 更多的测试任务(uBO 的默认设置还包含了 Peter Lowe's 和恶意网站列表),在 Microsoft Edge 上的测试结果会完全反转的这种说法那是相当的奇葩,支撑这一说法的不过是一个完全主观、缺乏数据支撑的估计,比如“方法论来自现实生活中的日常使用”。


很显然,公布由数据和方法论共同支撑的测试结果来驳斥一个未经证实的说法很有“攻击性”主观想法偏见安慰剂效应是一回事,对付它们的办法就是坚持使用客观数据,就像我在上面做的那样。