Image animation performance HTML 5 canvas vs HTML 4Add to My Brief

Mark Greenwood | 4/07/2011

In a recent project I had to animate a lot of images simultaneously (up to 700) and went looking for the best solution: HTML 5 + canvas or HTML 4 + css. It wasn't that easy to find anything on canvas and I soon found out why.

It turns out that canvas really is excellent for drawing vector graphics, however... there is no native animation in canvas! When animating, every frame must be redrawn, essentially from scratch using javascript. This works well enough on canvas when drawing vector graphics, but the frame rate can take a big hit depending on the javascript engine and the programmer's approach. If you are just importing and moving images, how hard could that be for canvas? It turns out that it's very taxing on the browser. When viewing on mobile devices, it is extremely taxing. Canvas is really designed for vector graphics.

HTML 4 suffers from similar problems when it comes to javascript engine and technique, however, it looks like css is far faster moving images around the screen. It may have to do with the fact that only the elements being moved need to be re-rendered for each frame, rather than the entire graphic area.

I found this excellent, simple frame rate comparison moving 1 image on canvas versus the DOM from Phrogz (can't tell you much more about him than that)

 Moving an Image via Canvas
• Moving an Image via CSS
 Moving 20 Sprites via Canvas over a 1024x768 background
• Moving 20 Sprites via CSS over a 1024x768 background

And here are the FPS results (see URL for test details):

                  Image  Image  Sprite  Sprite
        Browser  Canvas    CSS  Canvas     CSS
--------------------------------------------------------------
  Safari v5.0.3      59     95      59      89
Firefox v3.6.13      59     95      60      90
 Firefox v4.0b8      75     89      78      82
    Chrome v8.0     108    230     120     204
    iPad, Horiz      17     44       2      14
     iPad, Vert       4     75       2      15

As you can see, you're always going to get better results moving an image as a DOM element than redrawing the canvas.

The single most helpful information I could find on the internet is here at stackoverflow.com. You'll find links to the frame rate tests here too.

tags: TechnologyWeb DevelopmentWeb Design

Interested in learning more?

Wiliam is a leading supplier of web solutions and can provide expert advice to assist your business or organisation online.

Make enquiry   Request quotation

Comments

Share this page

Print this page Email this page to a friend Bookmark and Share

No Brief added yet.

My Brief results-driven approach emphasises a commitment to our clients needs through strategic analysis and best-practice.

Add to My Brief

Click on this icon to save item into My Brief. Retrieve, email and print

Drag & Drop

Drag & drop any iten with this icon into My Brief. Retrieve, email and print

Search Blogs