Looking for a snappy web browser

Getting tired of FF lags on desktop (I don't even hope to browse web painlessly on a netbook) once again, I decided to try different graphical web browsers on a VM – with limited resources that expose the lags faster, with fewer privacy concerns, and without bloating the primary system. Another goal was to benchmark their idle CPU time consumption, but that's less interesting (in short, both FF and Chromium do load CPU while doing nothing, though that's not a surprise: FF alone consumes lots of CPU time even without JS).

The results of that investigation are below; I've used various suggestions, search, and comparison of lightweight web browsers to find what to try.

One of the primary tests was to open a couple of github pages with large sources (used /torvalds/linux/blob/master/kernel/{audit,acct}.c), scroll them, switch between tabs, etc.

That's on Debian jessie, with i3 WM, the browsers are from the repositories if they are present there, or recent releases from official websites otherwise. The VM had 4 GB of RAM and 3 CPU cores. I've tried to run most of them multiple times, in combination with others as well as alone.

1 Web browsers

  • Chromium: surprisingly snappy, but uses some tokens – probably for tracking. Also seemingly buggy, particularly on scroll: while it scrolls instantly, some parts of a page get out of sync, and only get updated later. Though when there's more programs running simultaneously, it also begins to lag. Page loading is awkward, the pages are "jumpy" (failing to recall the proper term for that) during loading.
  • Firefox: terribly laggy, not usable at all.
  • qupzilla: laggy, 3-7 seconds to switch tabs between two large sources when Chromium and FF are active, 1-2 seconds on its own. Seems to consume a few times more CPU time than all the Chromium processes combined. Plays cat videos on youtube.
  • qutebrowser: similar to qupzilla performance-wise, maybe a bit faster. The UI looks nice (similar to that of uzbl, the controls are also similar to uzbl and vimperator, vim-inspired, keyboard-oriented), but the browser is not particularly smooth still. Doesn't seem to play cat videos on youtube, at least not by default.
  • dillo: relatively fast, but doesn't render pages properly, and updates/redraws them a few times during loading. Might be a w3m competitor, but hard to compare to other graphical web browsers. Not even particularly fast on lightweight websites: approximately the same as on github when it comes to scrolling.
  • netsurf: doesn't seriously lag on tab switching and scrolling, but seems to slowly redraw window each time it's shown, and to lag on loading and opening new tabs when Chromium is active (though pretty fast otherwise); also renders pages poorly, and no fancy things such as video or JS. Mouse cursor movement is also laggy sometimes (apparently on onMouseOver events, though didn't happen without Chromium being active). Shows a blank page for duckduckgo.com, but imgur.com is nice and snappy in it. A bit laggy on this (pretty lightweight) website.
  • Pale Moon: uses a weird custom GUI installer, apparently it's primarily a Windows program. Both the installer and the browser itself are very laggy.
  • surf + tabbed: pretty nice, tab switching is fast, though has minor lags on scrolling, and mouse cursor movement lags sometimes (probably on onMouseOver). surf (a single instance/tab) crashes when trying to watch a cat video on youtube. Also lags on lightweight websites.
  • uzbl: seemingly nice controls, but lags even on its help page; tab switching, scrollng, mouse movement – everything lags on github.
  • xombrero: tab switching is fast. Scrolling and loading are laggy, mouse movement is also laggy, and it seems to be buggy. Also not quite maintained nowadays.
  • midori: mouse cursor movement lags even when hovering over regular links on its local start page, empty tab opening lags (apparently and ironically because of its speed dial), switching between tabs and scrolling do lag a bit. Plays cat videos, but lags.

2 qutebrowser

I've installed qutebrowser outside of the VM after that (though installation is quite awkward on CentOS), and it's indeed pretty fast, though would require quite some tinkering: there's no accessibility features, so to avoid burning eyes with white backgrounds and getting illegible fonts on dynamic image backgrounds, one would have to use user stylesheets, and the keybindings are vi-style, qwerty-oriented, so that would require fixing.

Regarding resource consumption, with more tabs (74, just some stuff I had open in one of FF instances): it loads a CPU core for 12-20% while idle, 12-13% with JS turned off, 1.2 GB of RAM (RES). Takes about 30 seconds to open those, with JS turned off. If restarted without JS and all those tabs are opened at once, it only consumes 500 MB of memory (less than 7 MB per tab on average), and may drop to about 9%, 5%, or 1% of CPU while idle (seems to be different each time), apparently because of webkit.

3 Engines

Custom engines are not that great and not necessarily fast. Gecko seems to be slow (or just all the Gecko-based browsers I've tried are), and WebKit2 is fast, though that's still a mystery what it is so busy with while idle: it shouldn't be pre-rendering, since there's nothing to render for hours; shouldn't be JS, since it was off; shouldn't be a garbage collector, since it would be dull to run it when nothing at all happens for hours. Another possibility is a bit laggy event loop/handling.

4 Epilogue

Web may serve well as an information finding and retrieval tool: hyperlinked documents in combination with a decentralized network is a great idea, and, well, I don't have much else good to say. It's sad that it doesn't quite work nicely because of the other things.