feat: add less busy worker choice strategy
[poolifier.git] / benchmarks / internal / thread / dynamic.js
CommitLineData
ff5e76e1
JB
1const {
2 DynamicThreadPool,
3 WorkerChoiceStrategies
4} = require('../../../lib/index')
d1a9aa41 5const { runPoolifierTest } = require('../../benchmarks-utils')
325f50bc
S
6
7const size = 30
e843b904 8const numberOfTasks = 1
325f50bc 9
ff5e76e1
JB
10const dynamicPool = new DynamicThreadPool(
11 size / 2,
12 size * 3,
13 './benchmarks/internal/thread/worker.js'
14)
15
168c526f 16const dynamicPoolLessUsed = new DynamicThreadPool(
ff5e76e1
JB
17 size / 2,
18 size * 3,
19 './benchmarks/internal/thread/worker.js',
737c6d97 20 { workerChoiceStrategy: WorkerChoiceStrategies.LESS_USED }
ff5e76e1 21)
325f50bc 22
2d401b2d
JB
23const dynamicPoolWeightedRoundRobin = new DynamicThreadPool(
24 size / 2,
25 size * 3,
26 './benchmarks/internal/thread/worker.js',
27 { workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
28)
29
23ff945a
JB
30const dynamicPoolFairShare = new DynamicThreadPool(
31 size / 2,
32 size * 3,
33 './benchmarks/internal/thread/worker.js',
34 { workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE }
35)
36
325f50bc 37async function dynamicThreadTest (
e843b904 38 { tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
325f50bc 39) {
74750c7f 40 return runPoolifierTest(dynamicPool, { tasks, workerData })
ff5e76e1
JB
41}
42
168c526f 43async function dynamicThreadTestLessUsed (
e843b904 44 { tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
ff5e76e1 45) {
168c526f 46 return runPoolifierTest(dynamicPoolLessUsed, { tasks, workerData })
325f50bc
S
47}
48
2d401b2d
JB
49async function dynamicThreadTestWeightedRoundRobin (
50 { tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
51) {
52 return runPoolifierTest(dynamicPoolWeightedRoundRobin, { tasks, workerData })
53}
54
23ff945a
JB
55async function dynamicThreadTestFairShare (
56 { tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
57) {
58 return runPoolifierTest(dynamicPoolFairShare, { tasks, workerData })
59}
60
ff5e76e1
JB
61module.exports = {
62 dynamicThreadTest,
168c526f 63 dynamicThreadTestLessUsed,
2d401b2d
JB
64 dynamicThreadTestWeightedRoundRobin,
65 dynamicThreadTestFairShare
ff5e76e1 66}