X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmarks%2FmyBench.js;h=a69de002aab4c6840e03601b34546e3b54c29056;hb=17a9a09416d6c07f560eb0c79bd031d8c0125d4e;hp=45f11b296fbaa96408bdfd6caa923f257226eda7;hpb=48a9385a1c0a0c93ee839ad4534f63d31af4e9e3;p=poolifier.git diff --git a/benchmarks/myBench.js b/benchmarks/myBench.js index 45f11b29..a69de002 100644 --- a/benchmarks/myBench.js +++ b/benchmarks/myBench.js @@ -1,13 +1,26 @@ -const FixedThreadPool = require('../lib/fixed') -const DynamicThreadPool = require('../lib/dynamic') -const Pool = require('worker-threads-pool') +const { FixedThreadPool } = require('../lib/index') +const { DynamicThreadPool } = require('../lib/index') +const WorkerThreadsPool = require('worker-threads-pool') +const workerpool = require('workerpool') const tasks = 1000 -const size = 10 +const size = 16 // pools -const externalPool = new Pool({ max: size }) -const fixedPool = new FixedThreadPool(size, './yourWorker.js', { maxTasks: 10000 }) -const dynamicPool = new DynamicThreadPool(size / 2, 50, './yourWorker.js', { maxTasks: 10000 }) +const workerThreadsPool = new WorkerThreadsPool({ max: size }) +const workerPool = workerpool.pool('./external/workerpoolWorker.js', { + minWorkers: size / 2, + maxWorkers: size * 3, + workerType: 'thread' +}) +const fixedPool = new FixedThreadPool(size, './thread/worker.js', { + maxTasks: 10000 +}) +const dynamicPool = new DynamicThreadPool( + size / 2, + size * 3, + './thread/worker.js', + { maxTasks: 10000 } +) // data const workerData = { proof: 'ok' } @@ -17,10 +30,20 @@ async function fixedTest () { let executions = 0 const time = Date.now() for (let i = 0; i <= tasks; i++) { - fixedPool.execute(workerData).then(res => { - executions++ - if (executions === tasks) console.log(`Fixed pool take ${Date.now() - time} to work on ${executions} tasks`) - }) + fixedPool + .execute(workerData) + .then(res => { + executions++ + if (executions === tasks) { + return console.log( + `Fixed pool take ${ + Date.now() - time + }ms to work on ${executions} tasks` + ) + } + return null + }) + .catch(err => console.error(err)) } } @@ -28,38 +51,83 @@ async function dynamicTest () { let executions = 0 const time = Date.now() for (let i = 0; i <= tasks; i++) { - dynamicPool.execute(workerData).then(res => { - executions++ - if (executions === tasks) console.log(`Dynamic pool take ${Date.now() - time} to work on ${executions} tasks`) - }) + dynamicPool + .execute(workerData) + .then(res => { + executions++ + if (executions === tasks) { + return console.log( + `Dynamic pool take ${ + Date.now() - time + }ms to work on ${executions} tasks` + ) + } + return null + }) + .catch(err => console.error(err)) } } -async function externalPoolTest () { +async function workerThreadsPoolTest () { let executions = 0 const time = Date.now() for (let i = 0; i <= tasks; i++) { new Promise((resolve, reject) => { - externalPool.acquire('./externalWorker.js', { workerData: workerData }, (err, worker) => { - if (err) { - return reject(err) + workerThreadsPool.acquire( + './external/workerThreadsWorker.js', + { workerData: workerData }, + (err, worker) => { + if (err) { + return reject(err) + } + worker.on('error', reject) + worker.on('message', res => { + executions++ + resolve(res) + }) } - worker.on('error', reject) - worker.on('message', res => { - executions++ - resolve(res) - }) - }) - }).then(res => { - if (tasks === executions) console.log(`External pool take ${Date.now() - time} to work on ${executions} tasks`) + ) }) + .then(res => { + if (tasks === executions) { + return console.log( + `worker threads pool take ${ + Date.now() - time + }ms to work on ${executions} tasks` + ) + } + return null + }) + .catch(err => console.error(err)) + } +} + +async function workerpoolTest () { + let executions = 0 + const time = Date.now() + for (let i = 0; i <= tasks; i++) { + workerPool + .exec('yourFunction', [workerData]) + .then(res => { + executions++ + if (tasks === executions) { + return console.log( + `workerpool take ${ + Date.now() - time + }ms to work on ${executions} tasks` + ) + } + return null + }) + .catch(err => console.error(err)) } } async function test () { - fixedTest() - dynamicTest() - externalPoolTest() + await fixedTest() + await dynamicTest() + await workerThreadsPoolTest() + await workerpoolTest() } test()