Commit | Line | Data |
---|---|---|
f1c674cd | 1 | import Benchmark from 'benchmark' |
d09b37fc | 2 | import { |
d9d8c14e JB |
3 | Measurements, |
4 | PoolTypes, | |
d09b37fc | 5 | WorkerChoiceStrategies, |
d9d8c14e | 6 | WorkerTypes, |
d09b37fc JB |
7 | availableParallelism |
8 | } from '../../lib/index.mjs' | |
dbca3be9 | 9 | import { TaskFunctions } from '../benchmarks-types.mjs' |
f1c674cd JB |
10 | import { |
11 | LIST_FORMATTER, | |
12 | buildPoolifierPool, | |
13 | runPoolifierTest | |
14 | } from '../benchmarks-utils.mjs' | |
cdace0e5 | 15 | |
d09b37fc | 16 | const poolSize = availableParallelism() |
149fdbb9 JB |
17 | const pools = [] |
18 | for (const poolType of Object.values(PoolTypes)) { | |
19 | for (const workerType of Object.values(WorkerTypes)) { | |
23a6c28d JB |
20 | if (workerType === WorkerTypes.cluster) { |
21 | continue | |
22 | } | |
149fdbb9 | 23 | for (const workerChoiceStrategy of Object.values(WorkerChoiceStrategies)) { |
f1c674cd | 24 | for (const enableTasksQueue of [false]) { |
d9d8c14e JB |
25 | if (workerChoiceStrategy === WorkerChoiceStrategies.FAIR_SHARE) { |
26 | for (const measurement of [Measurements.runTime, Measurements.elu]) { | |
d9d8c14e JB |
27 | pools.push([ |
28 | `${poolType}|${workerType}|${workerChoiceStrategy}|tasks queue:${enableTasksQueue}|measurement:${measurement}`, | |
479ba9f6 | 29 | buildPoolifierPool(workerType, poolType, poolSize, { |
6bec21ed JB |
30 | workerChoiceStrategy, |
31 | workerChoiceStrategyOptions: { | |
32 | measurement | |
33 | }, | |
34 | enableTasksQueue | |
35 | }) | |
d9d8c14e JB |
36 | ]) |
37 | } | |
38 | } else { | |
d9d8c14e JB |
39 | pools.push([ |
40 | `${poolType}|${workerType}|${workerChoiceStrategy}|tasks queue:${enableTasksQueue}`, | |
479ba9f6 | 41 | buildPoolifierPool(workerType, poolType, poolSize, { |
6bec21ed JB |
42 | workerChoiceStrategy, |
43 | enableTasksQueue | |
44 | }) | |
d9d8c14e JB |
45 | ]) |
46 | } | |
149fdbb9 JB |
47 | } |
48 | } | |
49 | } | |
50 | } | |
0819631d | 51 | |
cdace0e5 JB |
52 | const taskExecutions = 1 |
53 | const workerData = { | |
dbca3be9 | 54 | function: TaskFunctions.jsonIntegerSerialization, |
f1c674cd | 55 | taskSize: 100 |
cdace0e5 | 56 | } |
f1c674cd JB |
57 | |
58 | const suite = new Benchmark.Suite('Poolifier') | |
59 | for (const [name, pool] of pools) { | |
60 | suite.add(name, async () => { | |
61 | await runPoolifierTest(pool, { | |
62 | taskExecutions, | |
63 | workerData | |
149fdbb9 JB |
64 | }) |
65 | }) | |
f1c674cd | 66 | } |
325f50bc | 67 | |
f1c674cd JB |
68 | suite |
69 | .on('cycle', event => { | |
70 | console.info(event.target.toString()) | |
ca6c7d70 | 71 | }) |
f1c674cd JB |
72 | .on('complete', function () { |
73 | console.info( | |
74 | 'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name')) | |
75 | ) | |
18cac485 | 76 | // eslint-disable-next-line n/no-process-exit |
f1c674cd | 77 | process.exit() |
18cac485 | 78 | }) |
f1c674cd | 79 | .run({ async: true, maxTime: 120 }) |