Script Preparation code:
x
 
var img = new Image();
img.decoding = 'sync';
var imageBitmap;
var imageBitmapResized;
var doneLoading = false;
let canvas = document.createElement('canvas');
canvas.width = 640;
canvas.height = 480;
let canvas2 = document.createElement('canvas');
let offscreen = canvas2.transferControlToOffscreen();
offscreen.width = 640;
offscreen.height = 480;
var ctx = canvas.getContext('2d');
var ctx2 = offscreen.getContext('2d');
img.addEventListener('load', function() {
  
  Promise.all([
    createImageBitmap(img)
  ]).then(function(images) {
  imageBitmap = images[0];
  doneLoading = true;
}, false);
  
  Promise.all([
    createImageBitmap(img, {imageOrientation: "none", premultiplyAlpha: "none", resizeWidth:~~(img.width/2), resizeHeight:~~(img.height/2), resizeQuality:"low"})
  ]).then(function(images) {
  imageBitmapResized = images[0];
  doneLoading = true;
}, false);
  
});
img.src = 'https://media.discordapp.net/attachments/447410261289205781/574359442913492992/unknown.png';
Tests:
  • Image

     
    if (doneLoading)
    ctx.drawImage(img,0,0);
  • ImageBitmap/Offscreen

     
    if (doneLoading)
    ctx.drawImage(imageBitmap,0,0);
  • ImageBitmap/Offscreen Resized

     
    if (doneLoading)
    ctx.drawImage(imageBitmapResized,0,0);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Image
    ImageBitmap/Offscreen
    ImageBitmap/Offscreen Resized

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 16 days ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Chrome 135 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
Image 160476400.0 Ops/sec
ImageBitmap/Offscreen 171451520.0 Ops/sec
ImageBitmap/Offscreen Resized 156561392.0 Ops/sec