This repository was archived by the owner on Sep 18, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathbench-stitch-canvas.js
71 lines (60 loc) · 2.71 KB
/
bench-stitch-canvas.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
var fs = require('fs');
var Canvas = require('canvas'), Image = Canvas.Image;
var Queue = require('./queue');
// Actual benchmarking code:
var iterations = 500;
var concurrency = 10;
var images = [
{ buffer: fs.readFileSync('test/fixture/5241-12663.png'), x: -43, y: -120 },
{ buffer: fs.readFileSync('test/fixture/5242-12663.png'), x: -43+256, y: -120 },
{ buffer: fs.readFileSync('test/fixture/5243-12663.png'), x: -43+512, y: -120 },
{ buffer: fs.readFileSync('test/fixture/5244-12663.png'), x: -43+768, y: -120 },
{ buffer: fs.readFileSync('test/fixture/5241-12664.png'), x: -43, y: -120+256 },
{ buffer: fs.readFileSync('test/fixture/5242-12664.png'), x: -43+256, y: -120+256 },
{ buffer: fs.readFileSync('test/fixture/5243-12664.png'), x: -43+512, y: -120+256 },
{ buffer: fs.readFileSync('test/fixture/5244-12664.png'), x: -43+768, y: -120+256 },
{ buffer: fs.readFileSync('test/fixture/5241-12665.png'), x: -43, y: -120+512 },
{ buffer: fs.readFileSync('test/fixture/5242-12665.png'), x: -43+256, y: -120+512 },
{ buffer: fs.readFileSync('test/fixture/5243-12665.png'), x: -43+512, y: -120+512 },
{ buffer: fs.readFileSync('test/fixture/5244-12665.png'), x: -43+768, y: -120+512 },
{ buffer: fs.readFileSync('test/fixture/5241-12666.png'), x: -43, y: -120+768 },
{ buffer: fs.readFileSync('test/fixture/5242-12666.png'), x: -43+256, y: -120+768 },
{ buffer: fs.readFileSync('test/fixture/5243-12666.png'), x: -43+512, y: -120+768 },
{ buffer: fs.readFileSync('test/fixture/5244-12666.png'), x: -43+768, y: -120+768 }
];
var written = false;
var queue = new Queue(function(i, done) {
var result = [];
var remaining = images.length;
images.forEach(function(tile, j) {
var img = new Image();
img.onload = function() {
result[j] = { image: img, x: tile.x, y: tile.y };
if (--remaining) return;
var canvas = new Canvas(700, 600);
var ctx = canvas.getContext('2d');
result.forEach(function(tile) {
ctx.drawImage(tile.image, tile.x, tile.y);
});
canvas.toBuffer(function(err, buffer) {
if (!written) {
fs.writeFileSync('./out.png', buffer);
written = true;
}
done();
});
};
img.src = tile.buffer;
});
}, concurrency);
queue.on('empty', function() {
var msec = Date.now() - start;
console.warn('Iterations: %d', iterations);
console.warn('Concurrency: %d', concurrency);
console.warn('Per second: %d', iterations / (msec / 1000));
});
for (var i = 1; i <= iterations; i++) {
queue.add(i, false);
}
var start = Date.now();
queue.start();