X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmarks%2FmyBench.js;fp=benchmarks%2FmyBench.js;h=6ea0abfed5e92b28fc5a5e1e833111fe6a77ad37;hb=75b44e22e0bc7bb88788c89cf9204f24c4a96360;hp=0000000000000000000000000000000000000000;hpb=57df5469cb6f9ffd7c3501f026f2659b3cf88f06;p=poolifier.git diff --git a/benchmarks/myBench.js b/benchmarks/myBench.js new file mode 100644 index 00000000..6ea0abfe --- /dev/null +++ b/benchmarks/myBench.js @@ -0,0 +1,62 @@ +const FixedThreadPool = require('../lib/fixed') +const DynamicThreadPool = require('../lib/dynamic') +const Pool = require('worker-threads-pool') +const tasks = 1000 +const size = 10 + +// pools +const externalPool = new Pool({ max: size }) +const fixedPool = new FixedThreadPool(size, './yourWorker.js', { maxTasks: 10000 }) +const dynamicPool = new DynamicThreadPool(size, size * 2, './yourWorker.js', { maxTasks: 10000 }) + +// data +const workerData = { proof: 'ok' } + +// fixed pool proof +async function fixedTest () { + let executions = 0 + const time = Date.now() + for (let i = 0; i < tasks; i++) { + await fixedPool.execute(workerData) + executions++ + } + console.log(`Fixed pool take ${Date.now() - time} to work on ${executions} tasks`) +} + +async function dynamicTest () { + let executions = 0 + const time = Date.now() + for (let i = 0; i < tasks; i++) { + await dynamicPool.execute(workerData) + executions++ + } + console.log(`Dynamic pool take ${Date.now() - time} to work on ${executions} tasks`) +} + +async function externalPoolTest () { + let executions = 0 + const time = Date.now() + for (let i = 0; i < tasks; i++) { + await new Promise((resolve, reject) => { + externalPool.acquire('./externalWorker.js', { workerData: workerData }, (err, worker) => { + if (err) { + return reject(err) + } + worker.on('error', reject) + worker.on('message', res => { + executions++ + resolve(res) + }) + }) + }) + } + console.log(`External pool take ${Date.now() - time} to work on ${executions} tasks`) +} + +async function test () { + await fixedTest() + await dynamicTest() + await externalPoolTest() +} + +test()