bbc17c18da0cdc29f59da0e2652cb8daaea452e7
[poolifier.git] / benchmarks / versus-external-pools / functions / function-to-bench.js
1 const fs = require('fs')
2 const {
3 WorkerFunctions,
4 executeWorkerFunction
5 // eslint-disable-next-line node/no-unpublished-require
6 } = require('../../benchmarks-utils')
7
8 const TaskTypes = {
9 CPU_INTENSIVE: 'CPU_INTENSIVE',
10 IO_INTENSIVE: 'IO_INTENSIVE'
11 }
12
13 module.exports = function (data) {
14 data = data || {}
15 data.taskType = data.taskType || TaskTypes.CPU_INTENSIVE
16 data.taskSize = data.taskSize || 5000
17 const benchmarksFilePath = '/tmp/poolifier-benchmarks'
18 switch (data.taskType) {
19 case TaskTypes.CPU_INTENSIVE:
20 // CPU intensive task
21 data.function = data.function || WorkerFunctions.jsonIntegerSerialization
22 executeWorkerFunction(data)
23 return { ok: 1 }
24 case TaskTypes.IO_INTENSIVE:
25 // IO intensive task
26 for (let i = 0; i < data.taskSize; i++) {
27 fs.writeFileSync(benchmarksFilePath, i.toString(), 'utf8')
28 fs.readFileSync(benchmarksFilePath, 'utf8')
29 fs.unlinkSync(benchmarksFilePath)
30 }
31 return { ok: 1 }
32 default:
33 throw new Error(`Unknown task type: ${data.taskType}`)
34 }
35 }