This is a feature, and I like it.
The rest is just flamebait.
This is a feature, and I like it.
The rest is just flamebait.
So whereas chrome has X number processes each using 0% for a total of 0*0=0% use, firefox would just have 0% cpu on its one process for a total of 0% use, obviously a substantial difference between FF and Chrome LOL.
I use both and the main thing I notice is they're so similar that you'll see articles from one or the other trying to differentiate themselves from the other to gain user share, as if the users can tell the difference. Even the addon / extension names are either the same or about the same.
I don't know if the author is trying to make Mozilla prioritize his desired features, but the years-behind metric doesn't sound very friendly, or used-centered for the matter.
I wonder if you could keep every page in its own process, but manually freeze unused processes and write them out to disk -- an application driven disk paging system basically. For pages where there's no state the browser could just kill them and reload them, iOS style (though the iOS browser doesn't care if it nukes state).
It was only very recently that WebKit2 handled most of this stuff -- up until then they just had a single WebProcess (I think Safari on Mavericks is the first multi-WebProcess browser Apple have shipped). So it's a hard problem and isn't due to some lack of competence that Mozilla have been slow to adapt. FxOS is fully multiprocess afaik.
Actually getting the rendered page image into a window owned by another process is easy: windows and X let you host HWNDs and Windows from other processes (if you choose to allow your WebProcesses access to the window server) or you could draw into a shared memory segment. The hard stuff is all of the regular browser hard stuff.
This also ignores the other important benefit of mparch: sandboxing. The browser needs some elevated access but the page content does not.
(I also don't see how a one-process-per-DOM model prevents any other forms of sandboxing inside the browser. The OS doesn't understand webpages and cannot isolate them from each other - the browser does - so sandboxing pages is the browser's responsibility...)
Albeit, that is certainly peanuts next to the v8 interpreters heap, the web page itself, loaded images, etc, but there is a reason few programs do the multi-process thing.
Chrome doesn't really get a speedup from it, it gets a stability bump. If one tab crashes in Chrome a tab goes, if a tab in firefox goes it drops the whole browser process.
As a development design pattern, if you are concerned with stability, you fork your threads into their own processes and prepare for them to go down in flames.
[1]: Restore tabs on exit. If one do not clean up after a while, the tabs will just continue to increase.