diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-10-01 12:17:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-01 12:17:16 +0200 |
commit | f68825eda03d43e2e75a8db7068ca19a88dfb6a7 (patch) | |
tree | 12b53020ca4a0b2c498a24d91913c84119ff47ad | |
parent | 5065c7bcd9973056b9b0d9df71d139da83596acc (diff) |
perf(fetch): optimize fillHeaders() key iteration (#12287)
Reduces self-time by ~70x (~70ms => ~1ms on 1M iters)
for...in filtered by hasOwnProperty yields the same set of keys as Object.keys()
-rw-r--r-- | ext/fetch/20_headers.js | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/fetch/20_headers.js b/ext/fetch/20_headers.js index c35c745b5..04ff104a2 100644 --- a/ext/fetch/20_headers.js +++ b/ext/fetch/20_headers.js @@ -29,7 +29,7 @@ ArrayPrototypeJoin, ArrayPrototypeSplice, ArrayPrototypeFilter, - ObjectKeys, + ObjectPrototypeHasOwnProperty, ObjectEntries, RegExpPrototypeTest, Symbol, @@ -76,7 +76,10 @@ appendHeader(headers, header[0], header[1]); } } else { - for (const key of ObjectKeys(object)) { + for (const key in object) { + if (!ObjectPrototypeHasOwnProperty(object, key)) { + continue; + } appendHeader(headers, key, object[key]); } } |