// Process a batch of work items in parallel using a worker pool. // Compares sequential (dedicated worker) vs parallel (pool) execution. // Requires Node v24+. // // Run: node examples/parallel-batch/main.ts import { workers } from '../../src/index.ts'; import { heavyWork } from './heavy-work.ts'; const items = Array.from({ length: 20 }, (_, i) => i + 1); // Sequential: each call awaits on the dedicated worker console.log('Sequential (dedicated worker)...'); const seqStart = performance.now(); const seqResults = []; for (const item of items) { seqResults.push(await heavyWork(item)); } const seqTime = (performance.now() - seqStart).toFixed(0); console.log(` ${items.length} items in ${seqTime}ms\n`); // Parallel: distribute across a pool of 4 workers let parTime: string; console.log('Parallel (worker pool, 4 workers)...'); { using run = workers(4); const parStart = performance.now(); const parResults = await Promise.all(items.map((item) => run(heavyWork(item)))); parTime = (performance.now() - parStart).toFixed(0); console.log(` ${items.length} items in ${parTime}ms\n`); } console.log(`Speedup: ~${(Number(seqTime) / Number(parTime)).toFixed(1)}x`);