-
Notifications
You must be signed in to change notification settings - Fork 1
/
job.ts
64 lines (58 loc) · 1.53 KB
/
job.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { init, go, shutdown } from '../dist/src'
import { job, start, stop } from 'microjob'
beforeAll(async () => {
init({ maxWorkerThreads: 2 })
await start({ maxWorkers: 2 })
})
afterAll(async () => {
await shutdown()
await stop()
})
test('CPU intensive task using microjob', async () => {
const promises: Promise<any>[] = []
for (let i = 0; i < 100; i++) {
promises.push(job(() => {
let all = 0
for (let i = 0; i < 10000; i++) {
all += i
}
return all
}))
}
await Promise.all(promises)
})
test('CPU intensive task using node-routine', async () => {
const promises: Promise<any>[] = []
for (let i = 0; i < 100; i++) {
promises.push(go(() => {
let all = 0
for (let i = 0; i < 10000; i++) {
all += i
}
return all
}))
}
await Promise.all(promises)
})
test('IO intensive task using microjob', async () => {
const promises: Promise<any>[] = []
for (let i = 0; i < 32; i++) {
promises.push(job(async () => {
const request = require('request-promise')
const resp = await request.get('https://httpbin.org/get')
return JSON.parse(resp)
}))
}
await Promise.all(promises)
})
test('IO intensive task using node-routine', async () => {
const promises: Promise<any>[] = []
for (let i = 0; i < 32; i++) {
promises.push(go(async () => {
const request = require('request-promise')
const resp = await request.get('https://httpbin.org/get')
return JSON.parse(resp)
}))
}
await Promise.all(promises)
})