render-vs-prerender (v109)

Revision 109 of this benchmark created on


Preparation HTML

<canvas id="canvas1" width="500" height="500"></canvas>
<script>
  var can = document.getElementById('canvas1');
  var ctx = can.getContext('2d');
  
  var can2 = document.createElement('canvas');
  can2.width = 20;
  can2.height = 20;
  var ctx2 = can2.getContext('2d');
  ctx2.fillRect(0, 0, 20, 20);

  var path = new Path2D();
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  path.rect(x, y, 20, 20);
}
    

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
fill rect
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  ctx.fillRect(x, y, 20, 20);
}
    
 
ready
drawImage
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  ctx.drawImage(can2, x, y, 10, 10);
}
    
    
 
ready
arc
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  ctx.beginPath();
  ctx.arc(x, y, 10, 0, 360);
  ctx.fill();
}
    
    
 
ready
batched arc
ctx.beginPath();
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  ctx.arc(x, y, 10, 0, 360);
}
ctx.fill();
    
    
 
ready
fill rect w/ no-op fill change
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  ctx.fillStyle = "rgb(200,0,0)";
  ctx.fillRect(x, y, 20, 20);
}
    
 
ready
pixel-aligned fillrect
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  ctx.fillRect(x | 0, y | 0, 20, 20);
}
    
 
ready
pixel aligned draw img
for (i = 0; i < 1000; i++) {
  var x = Math.random() * 500;
  var y = Math.random() * 500;
  ctx.drawImage(can2, x | 0, y | 0, 10, 10);
}
    
    
 
ready
fill path
ctx.fill(path);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.