One of the features in Chrome is that it is a multi-process browser. To most people, that doesn’t mean much. I could tell you that using multiple processes improves security, performance, and memory management, but you’ll probably yawn. Here is my attempt to look at one angle of multi-process performance with a demo.
Operating Systems like Microsoft Windows generally support the notion of running different processes at different priorities. Because Chrome isolates each “tab” into its own process, Chrome can tell the operating system which tabs are important and which are less important. When you switch to a tab, Chrome automatically tells the operating system to lower the priority of the tab which moved to the background, and raise the priority of the one which moved to the foreground. Other browsers can’t do this because those browsers run all tabs run in a single process.
Why does this matter? There are two primary reasons.
First, when you have many tabs open, the tab you are actively working with will get the most CPU resources. A background tab can continue to run, but it will never slow down your foreground work – because the operating system ensures that the higher priority processes always run first, even if it means starving the background process. This keeps your browser responsive and snappy no matter how many tabs you’ve opened.
Second, by lowering the priority of unused tabs, Chrome is being nicer to other applications. Whether your other application is Outlook, Word, Firefox, or even a game, Chrome’s background tabs cannot slow down those other applications because Chrome has intentionally yielded its priority to other applications. Chrome is the only browser which does this. Ironically, by making Chrome’s background tabs run slower, it makes your system faster!
Let’s run Chrome 1.0. In one tab, I’m running the v8 benchmark. In another tab, I’m running my CPU spinner page which eats up lots of CPU. If these two pages run concurrently, the browser’s score on the benchmark will be lower because the browser is doing two things at once. However, if Chrome properly lowers the priority of the background task, then the benchmark score should be unaffected. I’m running these tests on my laptop- a single processor machine.
First, here is the V8 Benchmark for Chrome. Chrome scored a 1333 in this quick run when nothing else was running.
Next, we run the CPU spinner in a background tab, and run the benchmark in the foreground. Chrome’s performance is unaffected by the background work, and in this run scores 1345.
Let’s try the same thing with Firefox 3.
First, a dry run for the benchmark. Firefox scores 165 on this test.
Now, with Chrome running the CPU spinner in the background, Firefox is not impacted. Firefox still gets a score of 157, even though Chrome is using 100% of the CPU in a background process! Priorities actually work.
Finally, lets see what happens if Chrome didn’t do this. This time, we’ll let Firefox run the background tab and see if it effects Chrome’s benchmark score. Sure enough, Chrome’s score drops to 762 (it was 1333). Firefox degraded Chrome’s performance by nearly 50%.
Other Performance Benefits
Startup performance is also enhanced with this feature – especially when you startup with multiple tabs. In this case, Chrome will lower the priority of the background tabs, and only the foreground tab will have high priority. You get the foreground tab first (which is what you want), an the secondary tabs fill in as CPU becomes available.
When single process applications like Firefox, Internet Explorer or Safari run web pages in background tabs, they can reduce your foreground application performance by as much as 50%! However, because Chrome uses background process priorities, it has almost zero impact on foreground applications. This lets the user get his work done and not worry that idle applications are in the way.
All part of what you get with a multi-process browser.