Commit | Line | Data |
---|---|---|
be0676b3 APA |
1 | # Poolifier Benchmarks |
2 | ||
3 | Welcome to poolifier benchmarks and thanks to look into this project. | |
4 | ||
5 | ## Folder Structure | |
6 | ||
f7a81082 JB |
7 | The [internal](./internal) folder contains poolifier internal benchmarks. |
8 | The [versus-external-pools](./versus-external-pools) folder contains benchmarks versus other Node.js pools. | |
be0676b3 APA |
9 | |
10 | ## Poolifier vs other pools benchmark | |
11 | ||
6ed0e2d4 | 12 | To compare poolifier pools performance vs other pools performance we chose to use [hyperfine](https://github.com/sharkdp/hyperfine). |
dc32abbb | 13 | We chose to use this tool because it allows to run isolated Node.js processes so each pool does not impact each other. |
0c757ef3 | 14 | External pools with which we compared the poolifier results: |
15 | ||
16 | - [piscina](https://github.com/piscinajs/piscina) | |
0cc7f82f | 17 | - [tinypool](https://github.com/tinylibs/tinypool) |
3432c5fa | 18 | - [node-worker-threads-pool](https://github.com/SUCHMOKUO/node-worker-threads-pool): removed from the benchmark because does not support dynamic ESM modules import or import outside of the worker function, which makes it pretty hard to use without tricks to make the worker function self-contained |
7f685093 | 19 | - [workerpool](https://github.com/josdejong/workerpool) |
7dfbda36 JB |
20 | - [worker-nodes](https://github.com/allegro/node-worker-nodes) |
21 | - [threads.js](https://github.com/andywer/threads.js/) | |
7f685093 JB |
22 | - [threadwork](https://github.com/kevlened/threadwork) |
23 | - [microjob](https://github.com/wilk/microjob) | |
be0676b3 | 24 | |
be0676b3 APA |
25 | Those are our results: |
26 | ||
bd0e5c4d | 27 | - CPU Intensive task with 100k operations submitted to each pool [BENCH-100000.md](./versus-external-pools/BENCH-100000.md). |
0c757ef3 | 28 | |
29 | > :warning: **We would need funds to run our benchmarks more often and on Cloud VMs, please consider to sponsor this project** | |
be0676b3 APA |
30 | |
31 | ## How to run benchmarks | |
32 | ||
33 | ### Internal | |
34 | ||
e69ff124 | 35 | To run the internal benchmarks, you just need to navigate to the root of poolifier project and run `pnpm benchmark` |
be0676b3 APA |
36 | |
37 | ## Versus other pools | |
38 | ||
1fe22d16 | 39 | Read [README.md](./versus-external-pools/README.md) |