Poolifier is used to perform CPU and/or I/O intensive tasks on Node.js servers, it implements worker pools using [worker_threads](https://nodejs.org/api/worker_threads.html) and [cluster](https://nodejs.org/api/cluster.html) Node.js modules.
With poolifier you can improve your **performance** and resolve problems related to the event loop.
Moreover you can execute your tasks using an API designed to improve the **developer experience**.
-Please consult our [general guidelines](#general-guidance).
+Please consult our [general guidelines](#general-guidelines).
- Easy to use :white_check_mark:
- Performance [benchmarks](./benchmarks/README.md) :white_check_mark:
- Support multiple task functions :white_check_mark:
- Support sync and async task functions :white_check_mark:
- Tasks distribution strategies :white_check_mark:
-- General guidance on pool choice :white_check_mark:
+- General guidelines on pool choice :white_check_mark:
- Error handling out of the box :white_check_mark:
- Widely tested :white_check_mark:
- Active community :white_check_mark:
<span> · </span>
<a href="#api">API</a>
<span> · </span>
- <a href="#general-guidance">General guidance</a>
+ <a href="#general-guidelines">General guidelines</a>
<span> · </span>
<a href="#contribute">Contribute</a>
<span> · </span>
Node versions >= 16.14.x are supported.
-## [API](https://poolifier.github.io/poolifier/)
+## [API](./docs/api.md)
-[**API Details**](./docs/api-details.md)
-
-## General Guideline
-
-For general guidelines, please refer to [this document](./docs/general-guidelines.md)
+## [General Guidelines](./docs/general-guidelines.md)
## Contribute
## General Guidelines
+
Performance is one of the main target of these worker pool implementations, poolifier team wants to have a strong focus on this.
Poolifier already has a [benchmarks](./benchmarks/) folder where you can find some comparisons.
By doing so, your application will be ready to execute in parallel more tasks, but during idle time your application will consume more memory.
One good choice from poolifier team point of view is to profile your application using a fixed or dynamic worker pool, and analyze your application metrics when you increase/decrease the number of workers.
For example you could keep the memory footprint low by choosing a _DynamicThreadPool_/_DynamicClusterPool_ with a minimum of 5 workers, and allowing it to create new workers until a maximum of 50 workers if needed. This is the advantage of using a _DynamicThreadPool_/_DynamicClusterPool_.
-But in general, **always profile your application**.
\ No newline at end of file
+But in general, **always profile your application**.