From ec642f18cc269151986c247755a866e0516ba2f3 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Wed, 1 May 2019 23:54:02 +0200 Subject: [PATCH] assert: use less read operations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reduces the total amount of reads when using `assert.ok()` with a falsy value. That increases the read performance significantly. Also remove a comment that can not be addressed. PR-URL: https://github.com/nodejs/node/pull/27525 Reviewed-By: Rich Trott Reviewed-By: Michaƫl Zasso --- lib/assert.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index dece9a08a78142..6e0b850b40c6a7 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -172,8 +172,8 @@ function getCode(fd, line, column) { let lines = 0; // Prevent blocking the event loop by limiting the maximum amount of // data that may be read. - let maxReads = 64; // bytesPerRead * maxReads = 512 kb - const bytesPerRead = 8192; + let maxReads = 32; // bytesPerRead * maxReads = 512 kb + const bytesPerRead = 16384; // Use a single buffer up front that is reused until the call site is found. let buffer = Buffer.allocUnsafe(bytesPerRead); while (maxReads-- !== 0) { @@ -619,11 +619,6 @@ function checkIsPromise(obj) { // Accept native ES6 promises and promises that are implemented in a similar // way. Do not accept thenables that use a function as `obj` and that have no // `catch` handler. - - // TODO: thenables are checked up until they have the correct methods, - // but according to documentation, the `then` method should receive - // the `fulfill` and `reject` arguments as well or it may be never resolved. - return isPromise(obj) || obj !== null && typeof obj === 'object' && typeof obj.then === 'function' &&