build(deps-dev): bump @types/node
[poolifier.git] / benchmarks / README.md
CommitLineData
2b74d91a 1# Poolifier benchmarks
be0676b3
APA
2
3Welcome to poolifier benchmarks and thanks to look into this project.
4
5## Folder Structure
6
2b74d91a 7The [internal](./internal) folder contains poolifier internal benchmark.
be0676b3 8
2b74d91a 9## Poolifier benchmark versus other worker pools
be0676b3 10
6ed0e2d4 11To compare poolifier pools performance vs other pools performance we chose to use [hyperfine](https://github.com/sharkdp/hyperfine).
af03108f 12We chose to use this tool because it allows to run isolated Node.js processes so each pool does not impact each other.
0c757ef3 13
77492f2e 14- External pools with which we compare the poolifier results:
af03108f
JB
15
16 - [piscina](https://github.com/piscinajs/piscina)
17 - [tinypool](https://github.com/tinylibs/tinypool)
18 - [workerpool](https://github.com/josdejong/workerpool)
19 - [worker-nodes](https://github.com/allegro/node-worker-nodes)
c102227e 20 - [nanothreads](https://github.com/snuffyDev/nanothreads)
be0676b3 21
7a21a451 22 Those are our results:
be0676b3 23
31c927e8 24 - CPU Intensive task with 100k operations submitted to each pool: [https://bencher.dev/perf/poolifier-benchmark](https://bencher.dev/perf/poolifier-benchmark).
be0676b3 25
af03108f 26- External pools with which we used to compare the poolifier results:
ae43d349 27
2688c526 28 - [node-worker-threads-pool](https://github.com/SUCHMOKUO/node-worker-threads-pool): removed because it does not support dynamic modules import or import outside the task function. The task function is expected to be self-contained, which makes it difficult to use in real world application without ugly hacks.
af03108f
JB
29 - [worker-threads-pool](https://github.com/watson/worker-threads-pool): removed because unmaintained since more than 4 years.
30 - [threadwork](https://github.com/kevlened/threadwork): removed because unmaintained since more than 3 years.
31 - [microjob](https://github.com/wilk/microjob): removed because unmaintained since more than 5 years.
4e434375 32 - [threads.js](https://github.com/andywer/threads.js): removed because not a threads pool.
be0676b3 33
2a87030e 34> :warning: **We would need funds to run our benchmark more often and on Cloud VMs, please consider to sponsor this project**
7a21a451 35
450ec5c8 36Read the [README.md](https://github.com/poolifier/benchmark#readme) to know how to run the benchmark.
be0676b3 37
eeabc751 38## Poolifier internal benchmark
be0676b3 39
0a9d76fc
JB
40### Usage
41
7a01f9c5 42To run the internal benchmark, you just need to navigate to the root of poolifier cloned repository and run `pnpm benchmark`.
0a9d76fc 43
49d60f11 44### [Results](https://bencher.dev/perf/poolifier)