Use prettierx and eslint native (#85)
[poolifier.git] / benchmarks / myBench.js
CommitLineData
75b44e22 1const FixedThreadPool = require('../lib/fixed')
2const DynamicThreadPool = require('../lib/dynamic')
3const Pool = require('worker-threads-pool')
4const tasks = 1000
106744f7 5const size = 16
75b44e22 6
7// pools
8const externalPool = new Pool({ max: size })
cf9aa6c3 9const fixedPool = new FixedThreadPool(size, './yourWorker.js', {
10 maxTasks: 10000
11})
12const dynamicPool = new DynamicThreadPool(
13 size / 2,
14 size * 3,
15 './yourWorker.js',
16 { maxTasks: 10000 }
17)
75b44e22 18
19// data
20const workerData = { proof: 'ok' }
21
22// fixed pool proof
23async function fixedTest () {
24 let executions = 0
25 const time = Date.now()
8d9ce260 26 for (let i = 0; i <= tasks; i++) {
27 fixedPool.execute(workerData).then(res => {
28 executions++
cf9aa6c3 29 if (executions === tasks) {
30 console.log(
31 `Fixed pool take ${Date.now() - time} to work on ${executions} tasks`
32 )
33 }
8d9ce260 34 })
75b44e22 35 }
75b44e22 36}
37
38async function dynamicTest () {
39 let executions = 0
40 const time = Date.now()
8d9ce260 41 for (let i = 0; i <= tasks; i++) {
42 dynamicPool.execute(workerData).then(res => {
43 executions++
cf9aa6c3 44 if (executions === tasks) {
45 console.log(
777b7824
S
46 `Dynamic pool take ${
47 Date.now() - time
48 } to work on ${executions} tasks`
cf9aa6c3 49 )
50 }
8d9ce260 51 })
75b44e22 52 }
75b44e22 53}
54
55async function externalPoolTest () {
56 let executions = 0
57 const time = Date.now()
8d9ce260 58 for (let i = 0; i <= tasks; i++) {
59 new Promise((resolve, reject) => {
cf9aa6c3 60 externalPool.acquire(
61 './externalWorker.js',
62 { workerData: workerData },
63 (err, worker) => {
64 if (err) {
65 return reject(err)
66 }
67 worker.on('error', reject)
68 worker.on('message', res => {
69 executions++
70 resolve(res)
71 })
75b44e22 72 }
cf9aa6c3 73 )
8d9ce260 74 }).then(res => {
cf9aa6c3 75 if (tasks === executions) {
76 console.log(
777b7824
S
77 `External pool take ${
78 Date.now() - time
79 } to work on ${executions} tasks`
cf9aa6c3 80 )
81 }
75b44e22 82 })
83 }
75b44e22 84}
85
86async function test () {
8d9ce260 87 fixedTest()
88 dynamicTest()
89 externalPoolTest()
75b44e22 90}
91
92test()