JavaScript BogoMips

The term BogoMips and the calculation thereof comes from Linux, and more particularly its author Linus. Linus needed a calibration value in the kernel to deal with processor speeds. Bogo comes from bogus and MIPS stands for Millions of Instructions Per Second. BogoMips is essentially the number of million times per second a processor can do absolutely nothing. It is a portable way to get an indication of the CPU speed. (see the BogoMips mini-Howto)

In JavaScript, there is no way to get the CPU speed of the client environment, so this JavaScript program tries to do the same things as BogoMips in the Linux kernel, except that instead of determining the BogoMips of the CPU itself, it more determines the BogoMips of the JavaScript engine in the browser, making this even more bogus than BogoMips. Unlike the Linux BogoMips value which is quantizised so you're most likely to get the exact same number all the time, the JS-BogoMips value can vary on each run due to system load and other underlying factors.

Your system score is:

JS-BogoMIPS (3x) = Testing...

Resulting effects level =

How do your results compare?

Sample Results
CPU TypeSpeed
(GHz)
# coresMemory
(GB)
OSFirefoxIESafariOpera
Intel Pentium II.410.5Win2k0.027243
Intel Pentium 43.011.5WinXP0.0983030.097802
Intel Pentium M1.611.0WinXP0.1215140.1101520.0848130.331526
AMD AthlonXP 2400+2.011.0WinXP0.1283400.127986
Intel Pentium M1.712.0WinXP0.1351670.1414940.499329
Intel Core 2 Duo2.224.0RHEL Linux (Gnome)0.2570560.149144*0.130639*0.406282
Intel Pentium 43.813.0WinXP0.1124620.153685
Intel Core Duo2.022.0WinXP0.1228790.162483
AMD Athlon64 3200+2.212.0SuSE Linux (KDE)0.1133220.164155*0.222556*0.360118
Intel Core 2 Duo2.221.0VMWare WinXP0.3435340.1872870.2144190.652730
Intel Core Duo2.022.0WinXP0.1906700.215037
Intel Core 2 Duo2.222.0WinXP0.1962540.2290190.2160830.678238
Intel Xeon2.625.0Mac OSX0.3515550.276668
AMD Athlon64 5200+2.622.0WinXP0.4238980.2717780.1614820.647618

* On Linux systems, IE is run under Wine and Konqueror is substituted for Safari

What's this good for?

This program was written in an attempt to determine how much data could be expected to be reasonably processed in an Ajax application on varying system speeds before the user experience would suffer. As sample usage of this calculation would be:

// if script.aculo.us Effects library is loaded and the client can handle it, use it
if (Effect && jsBogoMips.getEffectsLevel() > 0) {
    Effect.Fade(popupWindow);
} else {
    popupWindow.style.display = 'none';
}

What's the effects level?

The effects level is defined in the jsBogoMips code as a performance matrix which defines threshold levels to allow various functionality. The levels can be used in whatever way makes sense in your application. For example:

level0
no effects
level1
minimal effects
level2
normal effects
level3
not specified, but anything over level3 gives full effects

Currently the performance matrix, based on the above results, is defined as:

Browserlevel0level1level2
Firefox0.050.100.15
IE0.050.100.15
Safari0.050.100.20
Opera0.200.300.40

Download jsBogoMips.js