Skip to content

Commit 6e8929e

Browse files
authored
perf: reduce memory usage (#776)
1 parent 09cbb39 commit 6e8929e

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

packages/core/src/core/rsbuild.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,8 +393,12 @@ export const createRsbuildServer = async ({
393393
);
394394
}
395395

396+
// Ensure that when readFile is called in parallel, the file content will not be read into memory repeatedly
397+
const cachedReadFilePromises = new Map<string, Promise<string>>();
396398
const readFile = async (fileName: string) => {
397-
return new Promise<string>((resolve, reject) => {
399+
if (cachedReadFilePromises.has(fileName))
400+
return cachedReadFilePromises.get(fileName)!;
401+
const promise = new Promise<string>((resolve, reject) => {
398402
outputFileSystem.readFile(fileName, (err, data) => {
399403
if (err) {
400404
reject(err);
@@ -409,6 +413,9 @@ export const createRsbuildServer = async ({
409413
resolve(content);
410414
});
411415
});
416+
cachedReadFilePromises.set(fileName, promise);
417+
promise.finally(() => cachedReadFilePromises.delete(fileName));
418+
return promise;
412419
};
413420

414421
const buildData: Record<

0 commit comments

Comments
 (0)