HTML Preparation code:
AخA
 
1
<canvas align="center" id="canvas" width="800" height="800"></canvas>
Script Preparation code:
 
var ctx = document.getElementById('canvas').getContext('2d');
ctx.fillStyle = 'rgba(0,1,0,1)';
var rects = []
for (var i = 0; i < 50; i++) {
  var width = 5 + i * 5;
  var height = 7 + i * 3;
  var path = new Path2D();
  path.rect(0, 0, width, height);
  var rect = 
    {
      x: i, 
      y: i, 
      width: width, 
      height: height, 
      cachedPath: path
    };
  rects.push(rect);
}
ctx.clearRect(0, 0, 500, 500);
Tests:
  • Direct draw

     
    for (var i = 0; i < rects.length; i++) {
      var rect = rects[i];
      ctx.rect(rect.x, rect.y, rect.width, rect.height);
      ctx.fill();
    }
  • New path

     
    for (var i = 0; i < rects.length; i++) {
      var rect = rects[i];
      var path = new Path2D();
      path.rect(rect.x, rect.y, rect.width, rect.height)
      ctx.fill(path)
    }
  • Cached path

     
    for (var i = 0; i < rects.length; i++) {
      var rect = rects[i];
      ctx.translate(rect.x, rect.y);
      ctx.fill(rect.path);
      ctx.translate(-rect.x, -rect.y);
    }
  • Direct with beginpath

     
    for (var i = 0; i < rects.length; i++) {
            var rect = rects[i];
            ctx.beginPath();
            ctx.rect(rect.x, rect.y, rect.width, rect.height);
            ctx.fill();
        }
  • Direct fillrect

     
    for (var i = 0; i < rects.length; i++) {
        var rect = rects[i];
        ctx.fillRect(rect.x, rect.y, rect.width, rect.height);
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Direct draw
    New path
    Cached path
    Direct with beginpath
    Direct fillrect

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 months ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Chrome 127 on Windows
View result in a separate tab
Test name Executions per second
Direct draw 130.9 Ops/sec
New path 14718.2 Ops/sec
Cached path 30501.3 Ops/sec
Direct with beginpath 17044.2 Ops/sec
Direct fillrect 26224.7 Ops/sec