Earlier quoted context omitted.
I pointed this out on a Reddit thread quite a while back, started by some Firefox devs. Or maybe it was Opera devs. Anyway, I was surprised by the response: neither the devs, nor other commenters in the thread, saw the benefit to making every tab its own process.
IPC is very expensive. Furthermore, firefox 4 does have some separate processes (not per tab). Note that chrome's default is not per-tab either.
Firefox is slow - troubleshooting
21–25 of 25 posts
Re: Firefox is slow - troubleshooting
#22Re: Firefox is slow - troubleshooting
#23"Firefox may hang if left open for long periods of time. To fix the issue, restart Firefox." Oh my God...
I can't find that text on the page at the moment, but it's the truth. Firefox (3.6) seems to have a really nasty problem in its garbage collection system. If I leave it open for more than a couple of days, under normal use, it starts hanging for a couple of seconds every minute to half-minute -- and it hangs for longer, more often, the longer I leave it open. Closing and restarting Firefox seems to clear the issue up…
Re: Firefox is slow - troubleshooting
#24Re: Firefox is slow - troubleshooting
#25Earlier quoted context omitted.
IPC is very expensive. Furthermore, firefox 4 does have some separate processes (not per tab). Note that chrome's default is not per-tab either.
> IPC is very expensive. I have trouble taking that at face-value; Linux seems to do OK with it and, for a while, there was a little-bitty web browser for Macs called Stainless ( http://stainlessapp.com/ ) that did one-process-per-tab, and it seemed quite performant. Better, in fact, than all other browsers at the time. Unfortunately, it hasn't been updated in about a year now... > Note that chrome's default is not p…
That said, in general, IPC is slower than threading for the simple reason that processes are in different address spaces. When you perform an IPC call, you must take a TLB hit. With communication between threads, there is only context switching overhead (assuming no preemption between calls.)
Chrome has a few different ways to do tab communication, none of which are truly "one process per tab".