Partial Re-rendering

JavaScript performance comparison

Revision 7 of this test case created

Info

How much faster is it to render just the parts of the canvas that changed, compared to the whole thing?

Rendering a white dot that moves across a black background.

Preparation code

<canvas id="c" width="640" height="480">
</canvas>
<script>
  var canvas = document.getElementById('c');
  var context = canvas.getContext('2d');

  var HEIGHT = 100;
</script>

Preparation code output

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
re-render whole scene
context.fillStyle = 'red';
var angle = 0;
var dist  = 0;
for (var i = 0; i < canvas.width; i++) {
     context.clearRect(0 , 0 , canvas.width , canvas.height);
      context.save();
      context.translate(dist +=0.5  , 0);
      context.rotate(angle  += 0.2);
      context.fillRect(0 , 100 , 20 , 20);
      context.restore();

}
pending…
only render differences
context.fillStyle = 'red';
var angle = 0;
var dist  = 0;
for (var i = 0; i < canvas.width; i++) {
      context.clearRect(0 , 0 , canvas.width , canvas.height);
      context.save();      
            var fs = Math.sin(angle);
            var fc = Math.cos(angle);
      angle += 0.2;
      context.setTransform(fc , fs ,fs ,fc , dist += 0.5 , 0 );
      context.fillRect(0 , 100 , 20 , 20);
      context.restore();
}
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment