Commit | Line | Data |
---|---|---|
7a6a0a96 JB |
1 | const fs = require('fs') |
2 | ||
3 | const TaskTypes = { | |
4 | CPU_INTENSIVE: 'CPU_INTENSIVE', | |
5 | IO_INTENSIVE: 'IO_INTENSIVE' | |
6 | } | |
7 | ||
9f7e7a99 | 8 | module.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 | } |