Skip to content

Commit d51c40c

Browse files
LinkgoronMoritzLoewenstein
authored andcommitted
fs: improve fsPromises writeFile performance
Increase the write chunk size in fsPromises writeFile to improve performance. PR-URL: nodejs#37610 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent 55493f2 commit d51c40c

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

lib/internal/fs/promises.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
'use strict';
22

3-
const kWriteFileMaxChunkSize = 2 ** 14;
4-
53
const {
64
ArrayPrototypePush,
75
Error,
@@ -40,6 +38,7 @@ const {
4038
kMaxUserId,
4139
kReadFileBufferLength,
4240
kReadFileUnknownBufferLength,
41+
kWriteFileMaxChunkSize
4342
},
4443
copyObject,
4544
getDirents,

lib/internal/fs/utils.js

+2
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ const kIoMaxLength = 2 ** 31 - 1;
125125
// blocking other threads in case the available threads are all in use.
126126
const kReadFileUnknownBufferLength = 64 * 1024;
127127
const kReadFileBufferLength = 512 * 1024;
128+
const kWriteFileMaxChunkSize = 512 * 1024;
128129

129130
const kMaxUserId = 2 ** 32 - 1;
130131

@@ -835,6 +836,7 @@ module.exports = {
835836
kMaxUserId,
836837
kReadFileBufferLength,
837838
kReadFileUnknownBufferLength,
839+
kWriteFileMaxChunkSize
838840
},
839841
assertEncoding,
840842
BigIntStats, // for testing

test/parallel/test-fs-promises-file-handle-writeFile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ async function validateWriteFile() {
3434
async function doWriteAndCancel() {
3535
const filePathForHandle = path.resolve(tmpDir, 'dogs-running.txt');
3636
const fileHandle = await open(filePathForHandle, 'w+');
37-
const buffer = Buffer.from('dogs running'.repeat(10000), 'utf8');
37+
const buffer = Buffer.from('dogs running'.repeat(512 * 1024), 'utf8');
3838
const controller = new AbortController();
3939
const { signal } = controller;
4040
process.nextTick(() => controller.abort());

0 commit comments

Comments
 (0)