chore: v2.4.0-3
[poolifier.git] / benchmarks / internal / thread / dynamic.js
index 290820778e44ec7df7d2b2f2101b9dafeef4cb8c..503ea27cfbd6e2f40e8e13ae0c92b9832ca6c34a 100644 (file)
@@ -2,7 +2,7 @@ const {
   DynamicThreadPool,
   WorkerChoiceStrategies
 } = require('../../../lib/index')
-const { runPoolifierTest } = require('../benchmark-utils')
+const { runPoolifierTest } = require('../../benchmarks-utils')
 
 const size = 30
 const numberOfTasks = 1
@@ -13,11 +13,32 @@ const dynamicPool = new DynamicThreadPool(
   './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 (
@@ -26,13 +47,34 @@ 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
 }