diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-10-23 08:23:02 +0200 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2018-10-28 15:15:15 +0100 |
commit | f01518edfd83e2235d84485d87621e61f675b4a7 (patch) | |
tree | 20a562e8e3d86cce4787fef5847baaced6015a53 /lib/internal/child_process.js | |
parent | 0a23538e49e27b95ee35b051b6507eca74e2bb20 (diff) | |
download | android-node-v8-f01518edfd83e2235d84485d87621e61f675b4a7.tar.gz android-node-v8-f01518edfd83e2235d84485d87621e61f675b4a7.tar.bz2 android-node-v8-f01518edfd83e2235d84485d87621e61f675b4a7.zip |
src: improve StreamBase write throughput
Improve performance by transferring information about write status
to JS through an `AliasedBuffer`, rather than object properties
set from C++.
PR-URL: https://github.com/nodejs/node/pull/23843
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Diffstat (limited to 'lib/internal/child_process.js')
-rw-r--r-- | lib/internal/child_process.js | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index a2478ec69d..ddb7e58d7c 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -26,6 +26,7 @@ const { WriteWrap, kReadBytesOrError, kArrayBufferOffset, + kLastWriteWasAsync, streamBaseState } = internalBinding('stream_wrap'); const { Pipe, constants: PipeConstants } = internalBinding('pipe_wrap'); @@ -716,10 +717,10 @@ function setupChannel(target, channel) { } var req = new WriteWrap(); - req.async = false; var string = JSON.stringify(message) + '\n'; var err = channel.writeUtf8String(req, string, handle); + var wasAsyncWrite = streamBaseState[kLastWriteWasAsync]; if (err === 0) { if (handle) { @@ -729,7 +730,7 @@ function setupChannel(target, channel) { obj.postSend(message, handle, options, callback, target); } - if (req.async) { + if (wasAsyncWrite) { req.oncomplete = function() { control.unref(); if (typeof callback === 'function') |