Create new ImagePool for each batch
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
767e32511d
commit
f589ec9bfe
|
@ -44,12 +44,14 @@ export async function optimizeImages() {
|
||||||
|
|
||||||
// maximum number of workers is 8 in order to avoid running out of memory
|
// maximum number of workers is 8 in order to avoid running out of memory
|
||||||
const numberOfWorkers = Math.min(cpus().length, 8);
|
const numberOfWorkers = Math.min(cpus().length, 8);
|
||||||
const imagePool = new ImagePool(numberOfWorkers);
|
|
||||||
|
|
||||||
// process smaller batches in order to reduce memory usage
|
// process smaller batches in order to reduce memory usage
|
||||||
const batchSize = 32;
|
const batchSize = 32;
|
||||||
|
|
||||||
for (let i = 0; i < imagePaths.length; i += batchSize) {
|
for (let i = 0; i < imagePaths.length; i += batchSize) {
|
||||||
|
// use a new ImagePool for each batch to reduce memory usage
|
||||||
|
const imagePool = new ImagePool(numberOfWorkers);
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
imagePaths.slice(i, i + batchSize).map(async (imagePath) => {
|
imagePaths.slice(i, i + batchSize).map(async (imagePath) => {
|
||||||
const imageStartTime = Date.now();
|
const imageStartTime = Date.now();
|
||||||
|
@ -108,9 +110,9 @@ export async function optimizeImages() {
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
await imagePool.close();
|
await imagePool.close();
|
||||||
|
}
|
||||||
|
|
||||||
console.log(`TOTAL DURATION: ${getElapsedSeconds(startTime)}s`);
|
console.log(`TOTAL DURATION: ${getElapsedSeconds(startTime)}s`);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue