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