Почему вместе с worker-ом и без него, скорость выполнения задачи одинаковая?
app.js
const func = (array) =>{
return script(array)
}
const main = () =>{
performance.mark('start')
console.log(func([10,4,2,1,5]))
performance.mark('end')
performance.measure('main', 'start', 'end')
console.log(`Скорость работы составила: ${performance.getEntriesByName('main').pop().duration.toFixed()}ms`)
}
function script(array){
let result = []
array.map(el =>{
result.push(el % 2 == 0)
})
for(i = 1; i < 1099999999; i++){
i**4
}
return result
}
main()
Консоль
[ true, true, true, false, false ]
Скорость работы составила: 2540ms
worker-app.js
const { Worker } = require('worker_threads')
const workerFunc = (array) =>{
performance.mark('start')
return new Promise((resolve, reject) =>{
const worker = new Worker('./worker.js', {
workerData: array
})
worker.on('message', msg =>{
performance.mark('end')
performance.measure('main', 'start', 'end')
console.log(`Скорость работы составила: ${performance.getEntriesByName('main').pop().duration.toFixed()}ms`)
resolve(msg)
})
worker.on('error', err =>{
reject(err)
})
}).then(data =>{
console.log(data)
}).catch(err =>{
console.error(err)
})
}
const main = async () =>{
await workerFunc([10,4,2,1,5])
}
main()
Консоль
[ true, true, true, false, false ]
Скорость работы составила: 2613ms
worker.js
const { parentPort, workerData } = require('worker_threads')
const { script } = require('./script')
parentPort.postMessage(script(workerData))
script.js
function script(array){
let result = []
array.map(el =>{
result.push(el % 2 == 0)
})
// нагрузка на процессор
for(i = 1; i < 1099999999; i++){
i**4
}
return result
}
module.exports = { script }