repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
perf: use a single map to store pool workers and their related data
[poolifier.git]
/
src
/
pools
/
pool-internal.ts
diff --git
a/src/pools/pool-internal.ts
b/src/pools/pool-internal.ts
index 0c2454f83f9dbebbc48358ad3ab2e7c8c81fb77d..97e5d5d2d56ae75435b19d1ccb8afae10ff2e8ed 100644
(file)
--- a/
src/pools/pool-internal.ts
+++ b/
src/pools/pool-internal.ts
@@
-19,12
+19,22
@@
export interface TasksUsage {
avgRunTime: number
}
avgRunTime: number
}
+/**
+ * Internal worker type.
+ *
+ * @typeParam Worker - Type of worker which manages this pool.
+ */
+export interface WorkerType<Worker extends IPoolWorker> {
+ worker: Worker
+ tasksUsage: TasksUsage
+}
+
/**
* Internal contract definition for a poolifier pool.
*
/**
* Internal contract definition for a poolifier pool.
*
- * @t
emplate Worker
Type of worker which manages this pool.
- * @t
emplate Data
Type of data sent to the worker.
- * @t
emplate Response
Type of response of execution.
+ * @t
ypeParam Worker -
Type of worker which manages this pool.
+ * @t
ypeParam Data -
Type of data sent to the worker.
+ * @t
ypeParam Response -
Type of response of execution.
*/
export interface IPoolInternal<
Worker extends IPoolWorker,
*/
export interface IPoolInternal<
Worker extends IPoolWorker,
@@
-32,17
+42,9
@@
export interface IPoolInternal<
Response = unknown
> extends IPool<Data, Response> {
/**
Response = unknown
> extends IPool<Data, Response> {
/**
- *
List of currently available
workers.
+ *
Map of
workers.
*/
*/
- readonly workers: Worker[]
-
- /**
- * The workers tasks usage map.
- *
- * `key`: The `Worker`
- * `value`: Worker tasks usage statistics.
- */
- readonly workersTasksUsage: Map<Worker, TasksUsage>
+ readonly workers: Map<number, WorkerType<Worker>>
/**
* Pool type.
/**
* Pool type.
@@
-74,18
+76,10
@@
export interface IPoolInternal<
*/
findFreeWorker: () => Worker | false
*/
findFreeWorker: () => Worker | false
- /**
- * Gets worker index.
- *
- * @param worker The worker.
- * @returns The worker index.
- */
- getWorkerIndex: (worker: Worker) => number
-
/**
* Gets worker running tasks.
*
/**
* Gets worker running tasks.
*
- * @param worker The worker.
+ * @param worker
-
The worker.
* @returns The number of tasks currently running on the worker.
*/
getWorkerRunningTasks: (worker: Worker) => number | undefined
* @returns The number of tasks currently running on the worker.
*/
getWorkerRunningTasks: (worker: Worker) => number | undefined
@@
-93,7
+87,7
@@
export interface IPoolInternal<
/**
* Gets worker average tasks runtime.
*
/**
* Gets worker average tasks runtime.
*
- * @param worker The worker.
+ * @param worker
-
The worker.
* @returns The average tasks runtime on the worker.
*/
getWorkerAverageTasksRunTime: (worker: Worker) => number | undefined
* @returns The average tasks runtime on the worker.
*/
getWorkerAverageTasksRunTime: (worker: Worker) => number | undefined