Updated WebGL Benchmark Results
A bit over a year ago, we released a blog post with performance benchmarks for Unity WebGL, to compare WebGL performance in different browsers. We figured it was time to revisit those benchmarks to see how the numbers have changed.
Microsoft has since released Windows 10 with their new Edge browser (which supports asm.js and is now enabling it by default) – so we were interested to see how that competes. Also, we have an experimental build of Unity using Shared Array Buffers to run multithreaded code, and we wanted to see what kind of performance gains to expect. So we tested this in a nightly build of Firefox with Shared Array Buffer support.
You are welcome try our updated benchmark suite in your own browser here.
Some notes on methodology changes from last year’s benchmarks:
- This is using an updated build of the benchmark suite built in Unity 5.3. You can download the project folder for this benchmark suite here, so you can experiment with it locally, or try it on other platforms.
- This version has been stripped of all of the artwork and eye candy we had in the previous version. They added no value to the benchmarks, and the programmer art used never looked good anyway. Stripping the assets makes the builds smaller, and, more importantly, allows us to redistribute the project folder (see the link above).
- We omitted the “Mandelbrot GPU” benchmark from the test suite, as that test would really only benchmark the GPU and not show significantly different results on different browsers – so it would skew the overall results to show smaller relative differences.
- We omitted the comparison to a native standalone build we did last year, as we found those results to be misleading, as we are often running different code on different platforms (like different shader implementations with different quality settings – and also different scripting engines).
- We tested EdgeHTML 12 (Edge 20.10240.16384.0), which was the latest version when we ran the benchmarks, and which did not have asm.js enabled by default – so we turned it on manually. By now EdgeHTML 13 is released, which has asm.js enabled by default.
Here are the overall scores of the different browsers running the benchmark suite on an Windows 10 machine with a 3.3.GHz i7 CPU and an Nvidia GTX 960 GPU. Firefox 45 with Shared Array Buffers has a greyed out bar, as this is an experimental build of Unity running on a nightly build of Firefox:
Here are the scores of the different browsers running the benchmark suite on Mac OS X on a Retina MacBook Pro 15” with an 2.6 GHz i7 CPU (so we can see how Safari compares against the other browsers):
Here are the detailed results for each benchmark on windows (results scaled so that Firefox 41 32-bit equals 1.0 for each test):
And on OS X (again, scaled so that Firefox equals 1.0 for each test):
Here are the overall results from the benchmark build we showed last year compared to today, to see how performance has changed since (running on Mac OS X on a Retina MacBook Pro 15” with an 2.6 GHz i7 CPU):
Finally, here is a benchmark of how long it takes for Unity content to start up. The bars below represent the time in seconds it took between opening the benchmark project and rendering the first frame in different browsers. This is running content from a local disk, so the time to download files from the network is ignored. Firefox performs caching of asm.js compilation results, which means that when the same content is run more than once, compilation can be skipped, and subsequent runs will load faster. So we are showing numbers for both cold (first run) and hot (subsequent run with loading asm.js from cache) runs for Firefox:
- Firefox 42 64-bit is currently the fastest shipping browser in most of the benchmarks. The 32-bit version of Firefox is noticeably slower than the 64-bit version.
- Edge, as a new contender in these benchmarks comes in second, with results close to Firefox (and actually faster the Firefox 32-bit) in most benchmarks. In benchmarks which stress WebGL rendering performance (Particles, Asteroid Field), Edge performs best of all tested browsers.
- Safari delivers performance comparable to Chrome, up from a year ago when it was significantly slower than Chrome.
- Internet Explorer 11 is far behind the pack in just about everything, and is too slow to be of much use running Unity WebGL content.
- Our Unity build with Shared Array Buffers significantly improves performance (by several times in some of the benchmarks). This gives an outlook of future performance gains to expect.
- Overall, in Firefox, we are seeing an 18% performance increase compared to our results from one year ago. Some of this is attributable to Firefox 41 running faster than Firefox 32, the bigger difference seems to come from improvements in Unity and the emscripten compiler. These results are from OS X, where Firefox has been 64-bit for a long time. On Windows, the improvement since last year will be better, due to the arrival of 64-bit Firefox builds.
- Looking at load times, most modern browsers are able to load the benchmark project in between 5 and 7 seconds. Firefox is able to cache asm.js compilation, which brings subsequent loads down to 1.5-2 seconds.