-import { existsSync } from 'node:fs'
import cluster, { Worker as ClusterWorker } from 'node:cluster'
+import { existsSync } from 'node:fs'
+import { cpus } from 'node:os'
+import { env } from 'node:process'
import {
SHARE_ENV,
Worker as ThreadWorker,
type WorkerOptions
} from 'node:worker_threads'
-import { env } from 'node:process'
-import { randomInt } from 'node:crypto'
-import { cpus } from 'node:os'
-import { average, isPlainObject, max, median, min } from '../utils.js'
+
import type { MessageValue, Task } from '../utility-types.js'
+import { average, isPlainObject, max, median, min } from '../utils.js'
+import type { IPool, TasksQueueOptions } from './pool.js'
import {
type MeasurementStatisticsRequirements,
WorkerChoiceStrategies,
type WorkerChoiceStrategy,
type WorkerChoiceStrategyOptions
} from './selection-strategies/selection-strategies-types.js'
-import type { IPool, TasksQueueOptions } from './pool.js'
+import type { WorkerChoiceStrategyContext } from './selection-strategies/worker-choice-strategy-context.js'
import {
type IWorker,
type IWorkerNode,
WorkerTypes,
type WorkerUsage
} from './worker.js'
-import type { WorkerChoiceStrategyContext } from './selection-strategies/worker-choice-strategy-context.js'
/**
* Default measurement statistics requirements.
}
const getDefaultWorkerWeight = (): number => {
- const cpuSpeed = randomInt(500, 2500)
let cpusCycleTimeWeight = 0
for (const cpu of cpus()) {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (cpu.speed == null || cpu.speed === 0) {
cpu.speed =
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
- cpus().find(cpu => cpu.speed != null && cpu.speed !== 0)?.speed ??
- cpuSpeed
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/no-non-null-assertion,
+ cpus().find(cpu => cpu.speed != null && cpu.speed !== 0)!.speed
}
// CPU estimated cycle time
const numberOfDigits = cpu.speed.toString().length - 1