X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmarks%2FmyBench.js;h=a69de002aab4c6840e03601b34546e3b54c29056;hb=17a9a09416d6c07f560eb0c79bd031d8c0125d4e;hp=8835f1f5d4cec31feba03012fc7974df02810f91;hpb=cf9aa6c3340ad00792aa3c5e1a9d047cd0140fc2;p=poolifier.git diff --git a/benchmarks/myBench.js b/benchmarks/myBench.js index 8835f1f5..a69de002 100644 --- a/benchmarks/myBench.js +++ b/benchmarks/myBench.js @@ -1,18 +1,24 @@ -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 = 16 // pools -const externalPool = new Pool({ max: size }) -const fixedPool = new FixedThreadPool(size, './yourWorker.js', { +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, - './yourWorker.js', + './thread/worker.js', { maxTasks: 10000 } ) @@ -24,14 +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)) } } @@ -39,25 +51,30 @@ 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', + workerThreadsPool.acquire( + './external/workerThreadsWorker.js', { workerData: workerData }, (err, worker) => { if (err) { @@ -70,21 +87,47 @@ async function externalPoolTest () { }) } ) - }).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()