Improve benchmarks: add IO intensive task workload, add task size option, integrate...
[poolifier.git] / benchmarks / versus-external-pools / functions / function-to-bench.js
CommitLineData
7a6a0a96
JB
1const fs = require('fs')
2
3const TaskTypes = {
4 CPU_INTENSIVE: 'CPU_INTENSIVE',
5 IO_INTENSIVE: 'IO_INTENSIVE'
6}
7
9f7e7a99 8module.exports = function (data) {
7a6a0a96 9 console.log('functionToBench', data)
6c063733 10 data = data || {}
7a6a0a96 11 data.taskType = data.taskType || TaskTypes.CPU_INTENSIVE
6c063733 12 data.taskSize = data.taskSize || 5000
7a6a0a96 13 const benchmarksFilePath = '/tmp/poolifier-benchmarks'
6c063733 14 switch (data.taskType) {
7a6a0a96 15 case TaskTypes.CPU_INTENSIVE:
6c063733
JB
16 // CPU intensive task
17 for (let i = 0; i < data.taskSize; i++) {
18 const o = {
19 a: i
20 }
21 JSON.stringify(o)
9f7e7a99 22 }
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}