Browser extensions

Every browser extension has a different purpose and can help us accomplish a different task. Due to their usefulness, we end up installing many add-ons, which provide the functionality we miss or simply improve the existing one. This is all great, but we don't always realize that fixing problems at the browser level can be expensive.

If we press Shift+Esc in the Chrome browser, this opens its task manager, where we can see the memory requirements for each particular process. The list of processes can be long, especially if we have installed lots of extensions. We can see how much memory each one takes. In my case, the average was around 15MB per extension, so with 20 installed extensions I could expect to have around 300MB RAM reserved for extensions alone. Whether we use these extensions or not, the browser is always running them in the background. Additionally, depending on the current utilization, a minimum of around 60MB is required for the GPU process, 60MB for the browser and 22MB on average for the first empty tab. As soon as we load a heavy web page, for example a YouTube video, these 22MB can grow to over 66MB, the GPU process requirements rise to 130MB and the Flash plug-in is started, which takes 60MB more (as opposed to 9-18MB when in stand-by). The Google Now plug-in that we neither installed, nor is asking us, is started periodically to take additional 8MB RAM. These numbers are taken on a 32-bit machine, which means that once we move to 64-bit, the size of any inefficiencies is multiplied by a factor of two. If we compare these numbers with those we can take from Ctrl+Alt+Del, we can see that they are generally much bigger. Starting a single empty tab is more costly than having three open files in Notepad++. It's not hard to see which one has a higher per-megabyte value. (Per-megabyte value is valid for hard disk space as well. A program that takes 7MB, but is able to clean 68MB of junk files is less efficient than another one that takes >1MB and could clean 84MB. This depends not only on the tools, but also on the context in which they run. As a side note, a program has to be able to carry multiples of its own weight.)

Although the browser is trying to minimize memory usage over time, there are many places where memory leaks can happen and the prolonged use of certain extensions or websites can cause the browser to slow down over time until it eventually needs to close and release all resources. We still seem to think that the PC was made for a single program and a single tab, which is severely limiting what people can do with their machines. A machine that has only 512MB RAM, 2/3 of which are taken by the OS, doesn't have much room for a fancy browser. It is taking more resources than it is able to empower the user.

When testing websites, we rarely have only one browser open. Except Chrome, there are also Firefox, Opera, IE, Safari. They also have memory-hungry extensions. Although these extensions may have the same names, they reside multiple times in memory as they use different hosts. This can make a system less responsive. Although, extensions very often promise to make our life easier, they quietly steal machine resources. Running extensions and plug-ins can be costly, because they compete with the open tabs for the same available resources. The more active extensions we have, the less tabs we can open and the worse the browsing experience becomes. The web designer may not always be guilty that a website is slow, when a third-party extension can adversely impact the user-page interactions. In Chrome it is recommended to use an incognito window, which prevents the extensions from starting without uninstalling them. This is much easier than seeking where to enable/disable them before each run. When we need an extension, we can always open a normal window. A more radical approach would be to uninstall most extensions, especially the ones that we use only occasionally, but are constantly taxing the system. Depending on their number, we may notice a certain speedup in the browser response time when dealing with tabs and loading new content. Another option is to close certain non-critical processes when they occupy inadequate levels of memory. But this is hardly repeatable.

The number of tabs we keep open has a growing tendency. This can affect performance and make us believe that we need extra RAM when we already can't utilize effectively the one that we have. Our hardware is only able to soften, but not solve our software problems. For this we'll need better programmers with the right combination of skills. People that refuse to participate in 1000-component systems simply because they work in a company of 1000 people. Otherwise the best we can do is to hope that our website won't be loaded in a "late" tab after we have warned users to disable their extensions.