Merge pull request #46 from mayankagarwals/demo_latencyTest_fix
Fixed bug which led to latency not being measured in multiprocess node demopull/54/head
commit
8e61c418e6
|
@ -67,15 +67,17 @@ async function main() {
|
|||
if (process.argv.length !== 3) {
|
||||
const t0 = process.hrtime.bigint();
|
||||
const dir = fs.readdirSync(imgPathRoot);
|
||||
let numImages = 0;
|
||||
for (const img of dir) {
|
||||
if (!img.toLocaleLowerCase().endsWith('.jpg')) continue;
|
||||
numImages += 1;
|
||||
const c = await image(path.join(imgPathRoot, img));
|
||||
const result = await detect(c);
|
||||
log.data('Image:', img, 'Detected faces:', result.length);
|
||||
for (const face of result) print(face);
|
||||
}
|
||||
const t1 = process.hrtime.bigint();
|
||||
log.info('Processed', dir.length, 'images in', Math.trunc(parseInt(t1 - t0) / 1000 / 1000), 'ms');
|
||||
log.info('Processed', numImages, 'images in', Math.trunc(parseInt(t1 - t0) / 1000 / 1000), 'ms');
|
||||
} else {
|
||||
const param = process.argv[2];
|
||||
if (fs.existsSync(param)) {
|
||||
|
|
|
@ -12,13 +12,13 @@ const numWorkers = 2; // how many workers will be started
|
|||
const workers = []; // this holds worker processes
|
||||
const images = []; // this holds queue of enumerated images
|
||||
const t = []; // timers
|
||||
let dir;
|
||||
let numImages;
|
||||
|
||||
// trigered by main when worker sends ready message
|
||||
// if image pool is empty, signal worker to exit otherwise dispatch image to worker and remove image from queue
|
||||
async function detect(worker) {
|
||||
if (!t[2]) t[2] = process.hrtime.bigint(); // first time do a timestamp so we can measure initial latency
|
||||
if (images.length === dir.length) worker.send({ test: true }); // for first image in queue just measure latency
|
||||
if (images.length === numImages) worker.send({ test: true }); // for first image in queue just measure latency
|
||||
if (images.length === 0) worker.send({ exit: true }); // nothing left in queue
|
||||
else {
|
||||
log.state('Main: dispatching to worker:', worker.pid);
|
||||
|
@ -33,7 +33,7 @@ function waitCompletion() {
|
|||
if (activeWorkers > 0) setImmediate(() => waitCompletion());
|
||||
else {
|
||||
t[1] = process.hrtime.bigint();
|
||||
log.info('Processed', dir.length, 'images in', Math.trunc(parseInt(t[1] - t[0]) / 1000 / 1000), 'ms');
|
||||
log.info('Processed', numImages, 'images in', Math.trunc(parseInt(t[1] - t[0]) / 1000 / 1000), 'ms');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,10 +49,11 @@ async function main() {
|
|||
log.info('FaceAPI multi-process test');
|
||||
|
||||
// enumerate all images into queue
|
||||
dir = fs.readdirSync(imgPathRoot);
|
||||
const dir = fs.readdirSync(imgPathRoot);
|
||||
for (const imgFile of dir) {
|
||||
if (imgFile.toLocaleLowerCase().endsWith('.jpg')) images.push(path.join(imgPathRoot, imgFile));
|
||||
}
|
||||
numImages = images.length;
|
||||
|
||||
t[0] = process.hrtime.bigint();
|
||||
// manage worker processes
|
||||
|
|
Loading…
Reference in New Issue