Switch eslint-plugin-node to supported eslint-plugin-n
[poolifier.git] / benchmarks / versus-external-pools / functions / function-to-bench.js
CommitLineData
7a6a0a96 1const fs = require('fs')
d1a9aa41
JB
2const {
3 WorkerFunctions,
4 executeWorkerFunction
2f8c5b5c 5 // eslint-disable-next-line n/no-unpublished-require
d1a9aa41 6} = require('../../benchmarks-utils')
7a6a0a96
JB
7
8const TaskTypes = {
9 CPU_INTENSIVE: 'CPU_INTENSIVE',
10 IO_INTENSIVE: 'IO_INTENSIVE'
11}
12
9f7e7a99 13module.exports = function (data) {
6c063733 14 data = data || {}
7a6a0a96 15 data.taskType = data.taskType || TaskTypes.CPU_INTENSIVE
6c063733 16 data.taskSize = data.taskSize || 5000
7a6a0a96 17 const benchmarksFilePath = '/tmp/poolifier-benchmarks'
6c063733 18 switch (data.taskType) {
7a6a0a96 19 case TaskTypes.CPU_INTENSIVE:
6c063733 20 // CPU intensive task
d1a9aa41
JB
21 data.function = data.function || WorkerFunctions.jsonIntegerSerialization
22 executeWorkerFunction(data)
6c063733 23 return { ok: 1 }
7a6a0a96
JB
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 }
6c063733
JB
32 default:
33 throw new Error(`Unknown task type: ${data.taskType}`)
9f7e7a99 34 }
35}