89e9e2acae8c9d4fc09125fdde58090a50a1f4f7
2 * The worker function to execute during pools benchmarks.
3 * NOTE: This function requires to be self-contained, thread-safe and re-entrant.
5 * @param {*} data The worker data.
6 * @returns {*} The result.
8 function functionToBench (data
) {
9 const fs
= require('fs')
11 CPU_INTENSIVE
: 'CPU_INTENSIVE',
12 IO_INTENSIVE
: 'IO_INTENSIVE'
15 data
.taskType
= data
.taskType
|| TaskTypes
.CPU_INTENSIVE
16 data
.taskSize
= data
.taskSize
|| 5000
17 const baseDirectory
= '/tmp/poolifier-benchmarks'
18 switch (data
.taskType
) {
19 case TaskTypes
.CPU_INTENSIVE
:
21 for (let i
= 0; i
< data
.taskSize
; i
++) {
28 case TaskTypes
.IO_INTENSIVE
:
30 if (fs
.existsSync(baseDirectory
) === false) {
31 fs
.mkdirSync(baseDirectory
, { recursive
: true })
33 for (let i
= 0; i
< data
.taskSize
; i
++) {
34 const filePath
= `${baseDirectory}/${i}`
35 fs
.writeFileSync(filePath
, i
.toString(), {
39 fs
.readFileSync(filePath
, 'utf8')
43 throw new Error(`Unknown task type: ${data.taskType}`)
47 module
.exports
= functionToBench