GUIMark | Silverlight 3D demo | Some results | Contact

Bubblemark animation test
Silverlight (JavaScript and CLR) vs DHTML vs Flash (Flex) vs WPF vs Apollo vs Java (Swing)

Alexey Gavrilov, Loudtalks

screenshot The goal of this test is to directly compare performance of different RIA frameworks / approaches in different browsers. The test, which implements simple 2D animation demo, was initially created in DHTML, then ported to Silverlight (WPF/e), Flex and WPF (XBAP). The code used in DHTML, Silverlight (WPF/e) and Flex is essentially the same while for XBAP demo it was ported to C#.

The applicability of results is limited of course to the performance of animation, however, this is correlated to many practical patterns of modern RIA applications such as drag-and-drop and layout transitions. Additionally it allows to quantatively compare performance of different versions of browsers / frameworks.

Test page Requirements Download DIY tools
DHTML JavaScript source code n/a
Silverlight (JavaScript) Silverlight 1.1 source code Silverlight 1.1 Alpha SDK (free)
Silverlight 3.0 (CLR, CacheMode="BitmapCache") new Silverlight 3.0 source code Silverlight 3.0 SDK +
Microsoft Visual Studio 2008
Silverlight 2.0 (CLR) Silverlight 2.0 source code Silverlight 2.0 SDK +
Microsoft Visual Studio 2008
[deprecated] Silverlight 1.1 (CLR) Silverlight 1.1 source code [deprecated]
Flash (Flex) Flash Player 9.0 source code Adobe Flex 2 SDK (free) or
Adobe Flex 2 Builder (trial)
Flash (Flex) with cacheAsBitmap Flash Player 9.0 source code Adobe Flex 2 SDK (free) or
Adobe Flex 2 Builder (trial)
WPF IE and .NET 3.0 (Windows XP or Vista) source code Microsoft Visual Studio 2005 (trial)
Java (Swing) Java source code JDK 6u1 with NetBeans 5.5.1 (free)
Java (Swing, optimized) Java source code JDK 6u1 with NetBeans 5.5.1 (free)
Java (vector-based) Java source code JDK 6u1 with NetBeans 5.5.1 (free)
Java (PulpCore) Java source code JDK 6u1 with NetBeans 5.5.1 (free)
PulpCore framework
Java (LWJGL)new Java (JDK 5u10 is required) source code JDK 6u1 with NetBeans 5.5.1 (free)
LWJGL framework
JavaFX 1.0 (at Osvaldo Doederlein blog)new Java source code JDK 6u11 Recommended
NetBeans IDE 6.1 with JavaFX
JavaFX Preview (vector-based)new Java source code JDK 6u11 Recommended
NetBeans IDE 6.1 with JavaFX
Adobe AIR Flex app new Adobe AIR runtime source code Adobe AIR SDK (free) +
Adobe Flex Builder 3 (trial)
HTML Apollo app Apollo Alpha 1 source code Apollo SDK (free alpha)
Cairo (D & Python) n/a source code n/a

If you are going to use it as the benchmark make sure that you have no other applications running at the moment. Some background browser window with flash may affect results dramatically.

Update 7/29/2009:
Max Kosenko updated Silverlight CLR code to work with 3.0. According to his tests caching vector graphics as bitmap in the new Silverlight makes the demo 4x to 7x faster (depending on the number of objects on the screen)

Update 1/23/2009:
Osvaldo Doederlein ported JavaFX demo to work in 1.0 release and did some work to optimize it too. Check it out at his blog. kappaOne did a nice implementation using LWJGL. I'm planning to move this project to Google Code to make it easier to access all the great code samples it accumulated thus far.

Update 8/5/2008:
There are demos, based on the latest JavaFX preview (submitted by Brent Christian from Sun) available now. Check it out.

Update 5/15/2008:
Joris Dekker ported the outdated Apollo Flex demo to the recent Adobe AIR. It's up on the site now!

Update 4/15/2008:
Added Silverlight 2.0 version, submitted by Kevin Yang. It doesn't expose scripting interface so no balls # control is included. I'll fix it, when I put my hands on VS2008.

Update 10/18/2007:
iPhone JavaScript performance in Bubblemark

Update 08/26/2007:
Java-based demos keep on flowing in. Today I added vector-based one from Tony Weston and the one based on PulpCore framework from David Brackeen. The first is interesting, because it gives vector-based Java implementation so we can finally compare it to other vector-based renderers (Silverlight, Flex,JavaFX, WPF, Cairo). PulpCore demo is impressive because it not only shows good speed but animation is very smooth too.

Update 08/17/2007:
Lots of news today. Tony Weston submitted an optimized version of the Java bubblemark. There is another version of Java demo, with hardware acceleration enabled. Clemens Eisserer submitted it in June but I haven't had a chance to check and build it yet. If you are into Java, you can get the source here.

I also added the link to D and Python ports, implemented by Gerdus van Zyl (using Cairo renderer). I don't know how to build them, but the archive includes both source code and binaries for Windows. It's not a RIA of course but I think it's interesting anyways. C++/DirectX anyone? :)

Update 07/31/2007:
Silverlight CLR demos and source code are updated to work with Silverlight 1.1 Alpha Refresh.

Update 07/19/2007:
I updated Silverlight CLR demo code using a tip from Peter Blois from Microsoft. Now it runs 2x faster (200+ fps on my machine).

Update 07/18/2007:
JavaFX demo is added. H/W accelerated Java, Python and D versions are coming soon.

Update 05/15/2007:
Richard Bair ported this demo to Java! It's now included in test pages list on this site.

Update 05/04/2007:
I've updated 3D demo to make it work with 1.1 alpha. Will be working on Silverlight.NET port as it's very interesting to see if switching from browser's JavaScript engine to .NET will make a big difference as expected. Check back soon for new tests and results or grab our blog's RSS for updates.

Update 04/06/2007:
Based on this code I also created Silverlight (WPF/e) 3D demo (Feb CTP) (1.1 Alpha) -- check it out, it's pretty cool.

Update 03/20/2007:
I made Apollo-based applications from DHTML and Flex (cached) versions. More details are in this blog post and here are the links to respective applications (you'll need Apollo runtime to install and run them):

Update 03/14/2007:
I replaced XAML in Silverlight (WPF/e) with the updated version, generated using the latest XAMLExport plug-in for Adobe Illustrator. One effect of the change is that Silverlight (WPF/e) ball now looks exactly as original artwork. This, however, seems to affect performace noticably and the new version is ~10% slower. I included both old and new versions of the file (ball.xaml and ball_n.xaml respectively) into the source archive so that you can compare them.

See also:

The code is licensed under Creative Commons -- use it as you like. I will appreciate if you let me know in case you build something useful / fun from it.