Explaining the Differences

The huge difference between AdBlock Plus and Brave or uBlock Origin comes from different default rules applied. For example, the default settings for AdBlock Plus enable only the EasyList and Anti-Circumvention filter lists for ad blocking, while also enabling the lengthy “Acceptable Ads” exceptions list of third party ads and trackers that both uBlock Origin and Brave block by default. Although AdBlock Origin is able to use additional rules, the Guardian has previously reported that only 8% – 10% of AdBlock Plus users opt-out of “acceptable ads”, making this the more important scenario for testing.

Third-party content such as ads and trackers often run in isolated subframes within a page. This limits potentially harmful interaction between content and such scripts. Chrome’s multiprocess architecture means they often also run on separate processes, providing further security and performance isolation, but also allows us to better quantify their overheads. In both worksets, we found a few third-party subframes present across all browser and ad-blocker combinations. Those included first-party widgets (e.g. CNN’s podcasts) as well as third-party tools such as Twitter’s or Facebook’s social sharing widgets — arguably trackers, though ones that can’t be safely removed without breaking a website’s functionality. (Brave’s cookie + local storage blocking helps to greatly reduce the attack surface here.)

Tracing in Chromium attributes memory to individual processes; however, multi-process usage in Chromium itself is rather complex. It is well outside the scope of this article, but suffice it to say that for efficiency, the main frame of the page is sometimes allocated to the same process as its subframes, especially when they come from the same origin. Nevertheless, we define “blockable subframes” as ones that are not present in at least one other tested configuration, because in each case the pages were fully functional, with only ads removed. Represented in red color in the charts, they cover a large part of the memory savings achieved.

The fixed cost of the browser, the GPU process as well as any unnamed renderer processes typically running any extensions, are shown in black. This also covers the most direct cost of the ad blocking extensions, such as memory used for the block lists. Measuring only the specific extension processes would, however, miss part of the picture, both because part of Brave’s ad blocking functionality is within the core browser engine, but also because there are differences in the memory used at this core depending on the content rendered even without any extensions, although it is difficult to attribute memory use in more detail.

The green part in the graphs covers memory used by entities running on the processes tagged as running the main page content. It also, however, included some third-party subframes, albeit ones fairly deeply integrated. Specifically, the difference of 368 of memory between uBlock Origin and Brave in workset 2 can be attributed to just three pages, sfgate.com, boston.com and nypost.com where trackers did not get caught by the filter rules.