Skip to content

Instantly share code, notes, and snippets.

@karthik20522
Created November 22, 2013 19:01
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karthik20522/7605083 to your computer and use it in GitHub Desktop.
Save karthik20522/7605083 to your computer and use it in GitHub Desktop.
Image processing benchmark - NodeJS
var fs = require('fs');
var vips = require('../index');
var imagemagick = require("imagemagick");
var gm = require("gm");
var epeg = require("epeg");
var async = require("async");
var assert = require("assert");
var Benchmark = require("benchmark");
var cv = require("opencv");
var inputJpg = __dirname + "/testImage.jpg";
var outputJpg = __dirname + "/output";
var width = 640;
var height = 480;
async.series({
jpeg: function(callback) {
(new Benchmark.Suite("jpeg")).add("imagemagick", {
"defer": true,
"fn": function(deferred) {
imagemagick.resize({ srcPath: inputJpg, dstPath: outputJpg + "im.jpg", width: width, height: height }, function(err) {
deferred.resolve();
});
}
}).add("gm", {
"defer": true,
"fn": function(deferred) {
gm(inputJpg).resize(width, height).write(outputJpg + "gm.jpg", function (err) {
deferred.resolve();
});
}
}).add("epeg", {
"defer": true,
"fn": function(deferred) {
var image = new epeg.Image({path: inputJpg});
image.downsize(width, height).saveTo(outputJpg + "epg.jpg");
deferred.resolve();
}
}).add("vip", {
"defer": true,
"fn": function(deferred) {
vips.resize(inputJpg, outputJpg + "vip.jpg", width, height, true, false, function(err, m){
deferred.resolve();
});
}
}).add("opencv", {
"defer": true,
"fn": function(deferred) {
cv.readImage(inputJpg, function(err, im) {
im.resize(width, height);
im.save(outputJpg + "cv.jpg");
deferred.resolve();
});
}
}).on("cycle", function(event) {
console.log(String(event.target));
}).run();
}
}, function(err, results) {
//do something with the results
});
@harlow
Copy link

harlow commented Aug 14, 2015

Original post: http://kufli.blogspot.com/2013/12/image-processing-benchmarks.html

Benchmark results from post:

Test environment:
Memory: 5.8 GB
Processor: Intel Xeon CPU W3530 @ 2.80Ghz x 4 Core
OS: Ubuntu 13.04 / 64 bit
Graphics: Gallium 0.4 on AMD Redwood

Original Image - 350KB - 3168x3168 pixels | Resized to 640x480
imagemagick x 3.69 ops/sec ±2.27% (23 runs sampled)
gm x 5.03 ops/sec ±0.68% (29 runs sampled)
opencv x 19.18 ops/sec ±1.27% (49 runs sampled)
epeg x 35.49 ops/sec ±1.16% (60 runs sampled)
vips x 40.62 ops/sec ±5.01% (69 runs sampled)

Original Image - 1 MB - 3000x2000 | Resized to 640x480
imagemagick x 4.97 ops/sec ±2.35% (29 runs sampled)
gm x 5.00 ops/sec ±0.54% (29 runs sampled)
opencv x 15.15 ops/sec ±1.36% (41 runs sampled)
epeg x 27.47 ops/sec ±0.98% (69 runs sampled)
vips x 36.26 ops/sec ±6.05% (89 runs sampled)

Original Image - 15MB - 5382x6254 pixels | Resized to 640x480
imagemagick x 0.87 ops/sec ±1.20% (9 runs sampled)
gm x 0.87 ops/sec ±0.66% (9 runs sampled)
vips x 1.74 ops/sec ±0.43% (13 runs sampled)
opencv x 1.88 ops/sec ±4.09% (9 runs sampled)
epeg x 3.87 ops/sec ±0.78% (14 runs sampled)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment