summaryrefslogtreecommitdiff
path: root/ext/fetch/20_headers.js
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2021-10-01 12:17:16 +0200
committerGitHub <noreply@github.com>2021-10-01 12:17:16 +0200
commitf68825eda03d43e2e75a8db7068ca19a88dfb6a7 (patch)
tree12b53020ca4a0b2c498a24d91913c84119ff47ad /ext/fetch/20_headers.js
parent5065c7bcd9973056b9b0d9df71d139da83596acc (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()
Diffstat (limited to 'ext/fetch/20_headers.js')
-rw-r--r--ext/fetch/20_headers.js7
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]);
}
}