Improve benchmarks: add IO intensive task workload, add task size option, integrate...
[poolifier.git] / benchmarks / versus-external-pools / functions / function-to-bench.js
index b9054db22654b51d16ade84f9adf4c62aca192f4..7ecc7e12b89059b3878f443c3f594cb5c69f1773 100644 (file)
@@ -1,9 +1,18 @@
+const fs = require('fs')
+
+const TaskTypes = {
+  CPU_INTENSIVE: 'CPU_INTENSIVE',
+  IO_INTENSIVE: 'IO_INTENSIVE'
+}
+
 module.exports = function (data) {
+  console.log('functionToBench', data)
   data = data || {}
-  data.taskType = data.taskType || 'CPU_INTENSIVE'
+  data.taskType = data.taskType || TaskTypes.CPU_INTENSIVE
   data.taskSize = data.taskSize || 5000
+  const benchmarksFilePath = '/tmp/poolifier-benchmarks'
   switch (data.taskType) {
-    case 'CPU_INTENSIVE':
+    case TaskTypes.CPU_INTENSIVE:
       // CPU intensive task
       for (let i = 0; i < data.taskSize; i++) {
         const o = {
@@ -12,6 +21,14 @@ module.exports = function (data) {
         JSON.stringify(o)
       }
       return { ok: 1 }
+    case TaskTypes.IO_INTENSIVE:
+      // IO intensive task
+      for (let i = 0; i < data.taskSize; i++) {
+        fs.writeFileSync(benchmarksFilePath, i.toString(), 'utf8')
+        fs.readFileSync(benchmarksFilePath, 'utf8')
+        fs.unlinkSync(benchmarksFilePath)
+      }
+      return { ok: 1 }
     default:
       throw new Error(`Unknown task type: ${data.taskType}`)
   }