I didn’t blog yesterday. I’m sorry. I know the internets were in a frenzy arguing over whether I quit or gave up or what have you, but I didn’t. I was just busy doing boring stuff that wasn’t worth blogging about.
To make it up to all of my faithful readers, I have a special feature today:
My shitty graphics aside, I’ve been wanting to do a feature for a while about popular desktops and their startup speed vs resource consumption, but I’ve been so busy with fixing bugs that I had no time. Now that most of the bugs have been fixed, however, I have plenty of time for benchmarking. The following environments were tested on Ubuntu 12.04 on my i7 3500 with 16GB RAM using their Ubuntu packages:
- KDE Plasma (4.8.5)
- GNOME Shell (3.4.1)
- XFCE (184.108.40.206)
- Unity (5.16.0)
- Unity 2D (5.12.0)
My testing procedure was not 100% scientific or perfect, but the process went as follows:
- Log in to a desktop environment with a completely clean config (first run)
- Complete desktop’s first run wizard (if present), ensure that any first-run activities complete
- Determine fastest way to run desktop’s own terminal (konsole for kde, gnome-terminal for gnome/unity, xfce-terminal for xfce, terminology for enlightenment)
- Log in to same desktop environment
- Open terminal
- Print uptime (type !c<tab> since I use a modern shell with history completion)
- Print mem stats
- Take screenshot
The point here is to see which desktop can most speedily achieve a terminal from a default config; we’re all Linux users, and terminals are the bread and butter of the community.
Now it’s worth noting that, due to a number of factors, automatic logins here do not work, so I had to type my login and password each time as well as manually select the desktop session to launch. I did redo any tests where I failed to type either my username or password correctly on the first try, as well as any tests where I felt that I was too slow in selecting the session to launch. I estimate that no more than 1.0-1.5 seconds of variance were introduced by this process, which, based on my results, is not worth worrying about.
Also, I had something screwed up with my GTK3 theme somehow, so ignore the strange window borders.
The exposition is over, so onward to the (surprising) results! This list is in order of slowest load time to fastest, and the time in seconds is accompanied by the total memory usage in megabytes:
KDE Plasma: 57.76s, 1390MB
I don’t think this is a surprise to anyone. With its sizable memory usage and considerable loading time (though the load screen was very tasteful), KDE came in dead last. It also bombarded me with popup notifications in the bottom right corner. Method to launch Konsole was alt+f2, then typing ‘konsole’.
Unity: 56.98s, 1091MB
Also not a big surprise, Unity is about as slow as KDE if you take into account the 1 second variance that I mentioned previously. Not a great showing in startup time or memory usage from the most widely used Linux desktop. Method to launch gnome-terminal was alt+f2, then typing ‘gnome-terminal’.
GNOME Shell: 52.71s, 955MB
I threw GNOME shell in there because I know that the community there is a bit disgruntled about always being represented as Unity. Congratulations guys, you beat out Unity by a few seconds and quite a bit of memory! Downside here is that this was the only desktop environment from which I was unable to reboot my machine using a GUI. Sarcastic slow-clap for removing a necessary feature. Second round of slow clapping for being the only desktop to create popups (seen at bottom) with no timeout. Method to launch gnome-terminal was alt+f2, then typing ‘gnome-terminal’.
XFCE4: 50.42s, 929MB
We’re starting to get noticeably faster here. XFCE loaded fast enough that I didn’t feel like I could take a coffee break during the process, and it didn’t spam me with popups either. It also was one of only two desktops to provide a terminal launcher by default (seen at bottom). Unfortunately, I was testing the specific terminal for each desktop, and the provided launcher was launching Terminator (which I had previously installed while tracking down an E17 ticket about it). I was feeling generous, and I was pleased that they provided a terminal launcher at all, so I changed the launcher to launch xfce4-terminal instead.
Biggest disappointment of this test is that XFCE is the only desktop tested which does not provide or integrate its own screenshot utility by default. The utility (seen in screenshot) must be manually installed as a separate package, and is not automatically used with the Print Screen key (my preferred screenshot method which I used for every other test).
GNOME Classic: 50.34s, 940MB
I included all possible sessions provided by the desktop environment for completeness, so here we have GNOME Classic with a pretty respectable time and footprint. Interestingly enough, Classic allows you to reboot your machine from the menu whereas Shell does not. Consistency, who needs it! Method to launch gnome-terminal was alt+f2, then typing ‘gnome-terminal’.
Unity 2D: 50.22s, 1086MB
Despite the resource usage being nearly identical, the 2D version of Unity started up noticeably faster. Method to launch gnome-terminal was alt+f2, then typing ‘gnome-terminal’.
E17: 48.13s, 936MB
Clocking in leaner and faster than other desktops, the champ, E17! With a massive…2 second lead over GNOME Classic…and a colossal…4MB over…GNOME Classic…what the hell? This was actually really surprising to see, considering how often I brag about E17 being so much faster and smaller than everything else. True, GNOME Classic doesn’t provide any launcher, pager, gadgets, etc. like E17, but it still gets to a terminal almost as fast, which is the whole idea. E17 was also the only desktop besides XFCE to provide a terminal launcher (for terminology, seen at bottom), so launching was simple here.
W-w-w-w-w-w-w-whaaaaaaaaaaaaaaaaaaaaaaaaat?! This isn’t how my post wasn’t supposed to end! GNOME Classic with no effects starts up blazingly fast, crushing E17 in both memory size and speed. I’ll admit that I was skeptical about these results, but repeated testing proved that it’s not a fluke; GNOME without effects is an impressively quick-loading barebones desktop environment, so kudos to the developers here! Method to launch gnome-terminal was alt+f2, then typing ‘gnome-terminal’.
Juuust kidding. You didn’t really think I, the E17 release manager, would accept defeat so easily, did you? Of course not. If I’m going to be defeated, I’ll at least do it on equal footing, possibly with a good cry afterward! You see, dear readers, what I failed to consider in my initial E17 test was that I built the entire EFL stack, including E17, with optimizations disabled and debug info compiled in. This means CFLAGS were only “-O0 -g”: no -march, no -mtune, nothing else. Furthermore, I usually build with Xlib instead of XCB, and E17 can run using either based on how its libraries get packaged. So let’s back up and get some more normal results using some modest CFLAGS (-O2 and -march=native) and software XCB rendering:
E17: 47.10s, 920MB
This was actually a big surprise for us at the office; we were expecting a much more dramatic speed increase. The changes did manage to knock off 15MB of memory and about 1 second, but it still isn’t enough to compete with the previous GNOME entry. For shame. Actually, I attribute (blame) this loss to three things:
- EFM takes around 2.0 seconds to load the desktop, during which it blocks as it loads icons, which I hope to see improved for E18
- Terminology takes FOREVER to start up the first time due to library resolution
- GNOME has a tremendous advantage in load times, despite gnome-terminal being a far slower terminal, because all its libraries are already loaded from my session manager, LightDM, which uses GTK
But I’m not bitter about it. GNOME has obviously put a lot of effort into speeding up load times, and they deserve the rewards that come with their hard work. Congratulations to them, and I hope they enjoy the knowledge that they have the desktop which, using a default profile, is the fastest desktop to be able to access a terminal. They also have the lowest memory footprint under these conditions. Great job!
However! It’s important to remember that there’s always something better. And that something is, in fact, my own E17 profile.
E17RM: 44.36s, 875MB
Hah! Take that! I even handicapped my cheating self by using the right click menu (“favorites” menu) to open my terminal instead of using a keybind as I usually do. To those who would argue my title as the lightweight champion of fast terminal opening, this is my real desktop, and I use it every day. The one I use at home is identical except for RSS and weather gadgets next to the clock. Using a terminal for file management means I keep the fileman module unloaded at all times, and I have no need for app launchers since I have the favorites menu and evry.
So what have we learned? Firstly, I’m awesome at breaking my own rules. Second, don’t do benchmarks with code compiled for debugging. Third, GNOME can start up really fast.
Suddenly, a challenger appears!
TWM: 29.70s, 711MB
TWM is the winner here in every category by a digital mile. The damn thing is so fast that it even makes LightDM and my entire system load faster just knowing it’s going to get a chance to run. I have no explanation for the speed difference, so I won’t bother trying here.
I salute you, TWM. Your ability to manage windows is matched only by the speed with which you can manage them.
EDIT: As stated above, this was never intended to be a super accurate test. It’s relatively accurate, which is good enough for me, and should be good enough for anyone who isn’t getting a PhD in how to time booting into a terminal on Linux.