DynamicThreadPool,
WorkerChoiceStrategies
} = require('../../../lib/index')
-const { runPoolifierTest } = require('../benchmark-utils')
+const { runPoolifierTest } = require('../../benchmarks-utils')
const size = 30
const numberOfTasks = 1
'./benchmarks/internal/thread/worker.js'
)
-const dynamicPoolLessRecentlyUsed = new DynamicThreadPool(
+const dynamicPoolLessUsed = new DynamicThreadPool(
size / 2,
size * 3,
'./benchmarks/internal/thread/worker.js',
- { workerChoiceStrategy: WorkerChoiceStrategies.LESS_RECENTLY_USED }
+ { workerChoiceStrategy: WorkerChoiceStrategies.LESS_USED }
+)
+
+const dynamicPoolLessBusy = new DynamicThreadPool(
+ size / 2,
+ size * 3,
+ './benchmarks/internal/thread/worker.js',
+ { workerChoiceStrategy: WorkerChoiceStrategies.LESS_BUSY }
+)
+
+const dynamicPoolWeightedRoundRobin = new DynamicThreadPool(
+ size / 2,
+ size * 3,
+ './benchmarks/internal/thread/worker.js',
+ { workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN }
+)
+
+const dynamicPoolFairShare = new DynamicThreadPool(
+ size / 2,
+ size * 3,
+ './benchmarks/internal/thread/worker.js',
+ { workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE }
)
async function dynamicThreadTest (
return runPoolifierTest(dynamicPool, { tasks, workerData })
}
-async function dynamicThreadTestLessRecentlyUsed (
+async function dynamicThreadTestLessUsed (
+ { tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
+) {
+ return runPoolifierTest(dynamicPoolLessUsed, { tasks, workerData })
+}
+
+async function dynamicThreadTestLessBusy (
+ { tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
+) {
+ return runPoolifierTest(dynamicPoolLessBusy, { tasks, workerData })
+}
+
+async function dynamicThreadTestWeightedRoundRobin (
+ { tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
+) {
+ return runPoolifierTest(dynamicPoolWeightedRoundRobin, { tasks, workerData })
+}
+
+async function dynamicThreadTestFairShare (
{ tasks, workerData } = { tasks: numberOfTasks, workerData: { proof: 'ok' } }
) {
- return runPoolifierTest(dynamicPoolLessRecentlyUsed, { tasks, workerData })
+ return runPoolifierTest(dynamicPoolFairShare, { tasks, workerData })
}
module.exports = {
dynamicThreadTest,
- dynamicThreadTestLessRecentlyUsed
+ dynamicThreadTestLessUsed,
+ dynamicThreadTestLessBusy,
+ dynamicThreadTestWeightedRoundRobin,
+ dynamicThreadTestFairShare
}