Comparing Performance on Windows, Linux and OS X

Last week, I compared the speed of the 64-bit and the 32-bit build of Embedded Studio and the GCC compiler. The 64-bit version was the clear winner, with a performance gain of about 5 – 20%.
But what can we get from working with different operating systems?

At SEGGER, we developers are free to select the operating system to use. Most of us use Windows, as most of us are most familiar with it, but also because a lot of tools we use are available for Windows only.

Choosing one or the other operating system is not only a question of personal preferences, but may also increase efficiency.

In times of virtual machines and programs being available cross-platform, I wanted to find out which OS delivers the best performance. The results were quite surprising!

I did the same thing I did in my last post: I used different builds of Embedded Studio to compile a large project. The compiler used in this case is GCC. Instead of just benchmarking the 2 Windows builds, I now included Linux and Mac.

For the first test I booted up the Linux distribution, a Ubuntu 16.04 64-bit, I installed as a second OS on my computer, and re-compiled the project. As this is the same machine I used to benchmark the Windows builds, I expected similar results as with Windows 7 64-bit. Much to my surprise, it turned out Linux is considerably faster!

Using Linux saves  a lot of time when building. In this case it is amazing 70% faster than the Windows 64-bit build. It took only 1:09 instead of 1:57.

Build on native Linux

Since I am one of those Windows users, I wanted to find out if this performance gain can also be achieved using Linux in a virtual machine.
It turns out that it can. Linux is faster even when run as a virtual machine on Windows! With 1:30 it is quite a bit slower than the “native” Linux, but still much faster than the Windows executable.

When I am not in the office I work with a MacBook Pro, hardly on OS X, but in a Windows VM. How about comparing the performance of Embedded Studio on OS X, on the Windows VM, and a Linux VM on the same hardware?

Linux does even better. With 0:46 for a full re-build it is 130% faster than the Windows (1:47) and even 117% faster than OS X using eight instead of just four building threads (1:40).

 Linux: 100%
 Windows: 42%
 OS X: 46%

Comparison of Linux, Windows, and OS X on the MacBook Pro

Am I going to switch to Linux now?

The results show that Linux has been faster in all configurations. Even though I cannot completely switch to Linux as my day-to-day work environment, I will do more in the Linux virtual machines, which I have set up now, and see where it can further improve my efficiency.

I also learned that I need to ask for a better desktop PC for my work.

 

Coming up next: We know Embedded Studio is fast, but how fast is it compared to other IDEs? I plan to show this comparison in the next article of this series.

var id;
function SimulateBuild(Speed) {
var BarBuildLinux = document.getElementById(“BuildLinux”);
var BarBuildWindows = document.getElementById(“BuildWindows”);
var BarBuildOSX = document.getElementById(“BuildOSX”);
var TextLinux = document.getElementById(“TextLinux”);
var TextWindows = document.getElementById(“TextWindows”);
var TextOSX = document.getElementById(“TextOSX”);
var WidthLinux = 0.217;
var WidthWindows = 0.093;
var WidthOSX = 0.100;
BarBuildLinux.style.backgroundColor = “#ff9800”;
BarBuildWindows.style.backgroundColor = “#ff9800”;
BarBuildOSX.style.backgroundColor = “#ff9800”;
clearInterval(id);
id = setInterval(frame, 100 / Speed);
function frame() {
if (WidthLinux < 100) {
BarBuildLinux.style.width = WidthLinux + '%';
TextLinux.innerHTML = Math.floor(WidthLinux) + '%';
WidthLinux += 0.217;
} else {
BarBuildLinux.style.width = 100 + '%';
TextLinux.innerHTML = 100 + '%';
BarBuildLinux.style.backgroundColor = "#4CAF50";
}
if (WidthWindows < 100) {
BarBuildWindows.style.width = WidthWindows + '%';
TextWindows.innerHTML = Math.floor(WidthWindows) + '%';
WidthWindows += 0.093;
} else {
BarBuildWindows.style.width = 100 + '%';
TextWindows.innerHTML = 100 + '%';
BarBuildWindows.style.backgroundColor = "#4CAF50";
}
if (WidthOSX = 100 && WidthWindows >= 100 && WidthOSX >= 100) {
if (WidthLinux >= 100) {
BarBuildLinux.style.backgroundColor = “#4CAF50”;
TextLinux.innerHTML = 100 + ‘%’;
if (WidthLinux > 100) {
BarBuildLinux.style.width = 100 + ‘%’;
}
if (WidthWindows > 100) {
BarBuildWindows.style.width = 100 + ‘%’;
}
if (WidthOSX > 100) {
BarBuildOSX.style.width = 100 + ‘%’;
}
clearInterval(id);
}
}
}

Leave a Reply

Your email address will not be published. Required fields are marked *