Auto-exclude benchmark contenders that fail compilation

This commit is contained in:
Lovell Fuller 2015-08-24 18:55:59 +01:00
parent 4e67a5025a
commit 78f31d2b0d

View File

@ -7,11 +7,22 @@ var assert = require('assert');
var Benchmark = require('benchmark'); var Benchmark = require('benchmark');
var semver = require('semver'); var semver = require('semver');
var imagemagick = require('imagemagick'); // Contenders
var imagemagickNative = require('imagemagick-native');
var gm = require('gm'); var gm = require('gm');
var lwip = require('lwip'); var imagemagick = require('imagemagick');
var sharp = require('../../index'); var sharp = require('../../index');
var imagemagickNative;
try {
imagemagickNative = require('imagemagick-native');
} catch (err) {
console.log('Excluding imagemagick-native');
}
var lwip;
try {
lwip = require('lwip');
} catch (err) {
console.log('Excluding lwip');
}
var fixtures = require('../fixtures'); var fixtures = require('../fixtures');
@ -27,48 +38,54 @@ sharp.cache(0);
async.series({ async.series({
jpeg: function(callback) { jpeg: function(callback) {
var inputJpgBuffer = fs.readFileSync(fixtures.inputJpg); var inputJpgBuffer = fs.readFileSync(fixtures.inputJpg);
(new Benchmark.Suite('jpeg')).add('lwip-file-file', { var jpegSuite = new Benchmark.Suite('jpeg');
defer: true, // lwip
fn: function(deferred) { if (typeof lwip !== 'undefined') {
lwip.open(fixtures.inputJpg, function (err, image) { jpegSuite.add('lwip-file-file', {
if (err) { defer: true,
throw err; fn: function(deferred) {
} lwip.open(fixtures.inputJpg, function (err, image) {
image.resize(width, height, 'linear', function (err, image) {
if (err) { if (err) {
throw err; throw err;
} }
image.writeFile(fixtures.outputJpg, {quality: 80}, function (err) { image.resize(width, height, 'linear', function (err, image) {
if (err) { if (err) {
throw err; throw err;
} }
deferred.resolve(); image.writeFile(fixtures.outputJpg, {quality: 80}, function (err) {
if (err) {
throw err;
}
deferred.resolve();
});
}); });
}); });
}); }
} }).add('lwip-buffer-buffer', {
}).add('lwip-buffer-buffer', { defer: true,
defer: true, fn: function(deferred) {
fn: function(deferred) { lwip.open(inputJpgBuffer, 'jpg', function (err, image) {
lwip.open(inputJpgBuffer, 'jpg', function (err, image) {
if (err) {
throw err;
}
image.resize(width, height, 'linear', function (err, image) {
if (err) { if (err) {
throw err; throw err;
} }
image.toBuffer('jpg', {quality: 80}, function (err, buffer) { image.resize(width, height, 'linear', function (err, image) {
if (err) { if (err) {
throw err; throw err;
} }
assert.notStrictEqual(null, buffer); image.toBuffer('jpg', {quality: 80}, function (err, buffer) {
deferred.resolve(); if (err) {
throw err;
}
assert.notStrictEqual(null, buffer);
deferred.resolve();
});
}); });
}); });
}); }
} });
}).add('imagemagick-file-file', { }
// imagemagick
jpegSuite.add('imagemagick-file-file', {
defer: true, defer: true,
fn: function(deferred) { fn: function(deferred) {
imagemagick.resize({ imagemagick.resize({
@ -87,26 +104,32 @@ async.series({
} }
}); });
} }
}).add('imagemagick-native-buffer-buffer', { });
defer: true, // imagemagick-native
fn: function(deferred) { if (typeof imagemagickNative !== 'undefined') {
imagemagickNative.convert({ jpegSuite.add('imagemagick-native-buffer-buffer', {
srcData: inputJpgBuffer, defer: true,
quality: 80, fn: function(deferred) {
width: width, imagemagickNative.convert({
height: height, srcData: inputJpgBuffer,
format: 'JPEG', quality: 80,
filter: magickFilter width: width,
}, function (err, buffer) { height: height,
if (err) { format: 'JPEG',
throw err; filter: magickFilter
} else { }, function (err, buffer) {
assert.notStrictEqual(null, buffer); if (err) {
deferred.resolve(); throw err;
} } else {
}); assert.notStrictEqual(null, buffer);
} deferred.resolve();
}).add('gm-buffer-file', { }
});
}
});
}
// gm
jpegSuite.add('gm-buffer-file', {
defer: true, defer: true,
fn: function(deferred) { fn: function(deferred) {
gm(inputJpgBuffer) gm(inputJpgBuffer)
@ -168,7 +191,9 @@ async.series({
} }
}); });
} }
}).add('sharp-buffer-file', { });
// sharp
jpegSuite.add('sharp-buffer-file', {
defer: true, defer: true,
fn: function(deferred) { fn: function(deferred) {
sharp(inputJpgBuffer).resize(width, height).toFile(fixtures.outputJpg, function(err) { sharp(inputJpgBuffer).resize(width, height).toFile(fixtures.outputJpg, function(err) {
@ -446,28 +471,33 @@ async.series({
png: function(callback) { png: function(callback) {
var inputPngBuffer = fs.readFileSync(fixtures.inputPng); var inputPngBuffer = fs.readFileSync(fixtures.inputPng);
var pngSuite = new Benchmark.Suite('png'); var pngSuite = new Benchmark.Suite('png');
pngSuite.add('lwip-buffer-buffer', { // lwip
defer: true, if (typeof lwip !== 'undefined') {
fn: function(deferred) { pngSuite.add('lwip-buffer-buffer', {
lwip.open(inputPngBuffer, 'png', function (err, image) { defer: true,
if (err) { fn: function(deferred) {
throw err; lwip.open(inputPngBuffer, 'png', function (err, image) {
}
image.resize(width, height, 'linear', function (err, image) {
if (err) { if (err) {
throw err; throw err;
} }
image.toBuffer('png', function (err, buffer) { image.resize(width, height, 'linear', function (err, image) {
if (err) { if (err) {
throw err; throw err;
} }
assert.notStrictEqual(null, buffer); image.toBuffer('png', function (err, buffer) {
deferred.resolve(); if (err) {
throw err;
}
assert.notStrictEqual(null, buffer);
deferred.resolve();
});
}); });
}); });
}); }
} });
}).add('imagemagick-file-file', { }
// imagemagick
pngSuite.add('imagemagick-file-file', {
defer: true, defer: true,
fn: function(deferred) { fn: function(deferred) {
imagemagick.resize({ imagemagick.resize({
@ -484,19 +514,25 @@ async.series({
} }
}); });
} }
}).add('imagemagick-native-buffer-buffer', { });
defer: true, // imagemagick-native
fn: function(deferred) { if (typeof imagemagickNative !== 'undefined') {
imagemagickNative.convert({ pngSuite.add('imagemagick-native-buffer-buffer', {
srcData: inputPngBuffer, defer: true,
width: width, fn: function(deferred) {
height: height, imagemagickNative.convert({
format: 'PNG', srcData: inputPngBuffer,
filter: magickFilter width: width,
}); height: height,
deferred.resolve(); format: 'PNG',
} filter: magickFilter
}).add('gm-file-file', { });
deferred.resolve();
}
});
}
// gm
pngSuite.add('gm-file-file', {
defer: true, defer: true,
fn: function(deferred) { fn: function(deferred) {
gm(fixtures.inputPng) gm(fixtures.inputPng)
@ -525,7 +561,9 @@ async.series({
} }
}); });
} }
}).add('sharp-buffer-file', { });
// sharp
pngSuite.add('sharp-buffer-file', {
defer: true, defer: true,
fn: function(deferred) { fn: function(deferred) {
sharp(inputPngBuffer).resize(width, height).toFile(fixtures.outputPng, function(err) { sharp(inputPngBuffer).resize(width, height).toFile(fixtures.outputPng, function(err) {