A new blog post has been making rounds on the web which demonstrates that Chrome browser uses 10X more RAM than Safari. The blog post does a test on macOS Big Sur, in which Twitter and Gmail are loaded in both browsers and resulting RAM usage is recorded using psrecrod.
The results show that the average RAM usage when using Twitter in a single tab in Chrome shows 730 MB while in Safari, the same test shows 73 MB RAM usage. Even when 54 tabs are opened, and compared in both browsers, the RAM usage is 290 MB per tab in Chrome and 12 MB per tab in Safari. While this is an astonishingly high delta in RAM usage, the methodology used for this test is not entirely accurate. Here is why.
Fact check: Chrome vs Safari RAM usage
The test does by Flotato aims to count all processes originating from both Safari and Chrome. This includes not only the main browser process, but also processes created for each tab, and the renderer processes. As there are no extensions in either browser, there is no concern about additional RAM usage by them. However, psrecord, the tool used to count the RAM usage, does not count all Safari processes. As per a developer from Chrome V8 JavaScript engine team on Hacker News:
(Disclaimer: V8 dev)
This post is unfortunately nonsense, because it’s making a fundamental measurement error: not including renderer processes for Safari, and only measuring the browser process (which should be expected to be roughly O(1) memory in the number of tabs).To the author’s credit, they are trying to include child processes – I’m not sure why, but psrecord seems to not (in local testing) include child processes for Safari even when the “–include-children” flag is passed. I guess it does for Chrome, for whatever reason.
I’m somewhat disappointed that the author, or half the comments on the post, didn’t question these wildly different results though…
So while it is a known fact that Chrome uses more RAM than Safari, it is entirely inaccurate to claim that it uses 10X more RAM than Safari. This can be tested easily by opening the same website on both browsers one-by-one, and noticing how it impacts available RAM.
Another commentator on Hacker News mentioned that psrecord likely does not measure Safari child processes as the browser send them off to launchd.
Yep. Safari is good, but it’s not magic. I suspect psrecord doesn’t catch Safari processes because Safari sends them off to launchd because they get launched via XPC, while Chrome’s subprocesses are “true” children.
Whatever the scenario might be, it is completely unrealistic to believe that Safari uses such little RAM. It is true that Safari is more tightly integrated within macOS and is lighter on memory compared to other browsers, but it comes at the cost of performance, specially when you open multiple JavaScript heavy websites. You start getting tab reloads and crashes at one point in Safari. When you do the same in Chrome, you rarely see any slowdowns because Chrome uses a lot more resources than Safari and stays fast and responsive.
This is something that Flotato also points out that both browsers heat up the MacBook Pro at the same levels, with Safari heating it more than Chrome, despite the former allegedly showing lower resource usage.
And then there’s this chart. As we can see, the two browsers heat up the computer almost to the exact same level – Safari even getting slightly warmer. This probably points to psutil not being able to see all Safari’s child processes, but only the main ones — despite the fact that Activity Monitor is able to group them. That’s a little confusing.
Chrome has been an easy target over the years due to its resource usage, however, as we mentioned before, it is easily the fastest and most responsive browser even under heavy workloads, which is why users still prefer it over other browsers.
P.S. don’t believe every clickbait Chrome-bashing article you come across on the Internet.
Damn, someone is salty.