sharp/test/bench/random.js
Lovell Fuller 4f9f8179a6
Linter: apply all recommended biome settings
Enforces previously-skipped useArrowFunction check
2025-11-04 09:41:45 +00:00

76 lines
1.8 KiB
JavaScript

/*!
Copyright 2013 Lovell Fuller and others.
SPDX-License-Identifier: Apache-2.0
*/
const imagemagick = require('imagemagick');
const gm = require('gm');
const assert = require('node:assert');
const Benchmark = require('benchmark');
const sharp = require('../../');
const fixtures = require('../fixtures');
sharp.cache(false);
const min = 320;
const max = 960;
const randomDimension = () => Math.ceil((Math.random() * (max - min)) + min);
new Benchmark.Suite('random').add('imagemagick', {
defer: true,
fn: (deferred) => {
imagemagick.resize({
srcPath: fixtures.inputJpg,
dstPath: fixtures.path('output.jpg'),
quality: 0.8,
width: randomDimension(),
height: randomDimension(),
format: 'jpg',
filter: 'Lanczos'
}, (err) => {
if (err) {
throw err;
} else {
deferred.resolve();
}
});
}
}).add('gm', {
defer: true,
fn: (deferred) => {
gm(fixtures.inputJpg)
.resize(randomDimension(), randomDimension())
.filter('Lanczos')
.quality(80)
.toBuffer((err, buffer) => {
if (err) {
throw err;
} else {
assert.notStrictEqual(null, buffer);
deferred.resolve();
}
});
}
}).add('sharp', {
defer: true,
fn: (deferred) => {
sharp(fixtures.inputJpg)
.resize(randomDimension(), randomDimension())
.toBuffer((err, buffer) => {
if (err) {
throw err;
} else {
assert.notStrictEqual(null, buffer);
deferred.resolve();
}
});
}
}).on('cycle', (event) => {
console.log(String(event.target));
}).on('complete', function () {
const winner = this.filter('fastest').map('name');
assert.strictEqual('sharp', String(winner), `sharp was slower than ${winner}`);
}).run();