0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-12 16:59:32 -05:00
denoland-deno/ext
Marcos Casagrande e152f4002e perf(ext/headers): use regex.test instead of .exec (#20125)
This PR improves the performance of `Headers.get` by using `Regex.test`
instead of `.exec`. Also replaced the `Map` used for caching with an
object which is a bit faster

**This patch**

```
cpu: 13th Gen Intel(R) Core(TM) i9-13900H
runtime: deno 1.36.1 (x86_64-unknown-linux-gnu)

benchmark              time (avg)        iter/s             (min … max)       p75       p99      p995
----------------------------------------------------------------------- -----------------------------
Headers.get           124.71 ns/iter   8,018,687.3 (115.11 ns … 265.66 ns) 126.05 ns 136.12 ns 142.37 ns
```

**1.36.1**

```
cpu: 13th Gen Intel(R) Core(TM) i9-13900H
runtime: deno 1.36.0 (x86_64-unknown-linux-gnu)

benchmark              time (avg)        iter/s             (min … max)       p75       p99      p995
----------------------------------------------------------------------- -----------------------------
Headers.get           218.91 ns/iter   4,568,172.3 (165.37 ns … 264.44 ns) 241.62 ns 260.94 ns 262.67 ns
```

```js
const headers = new Headers({
  "Content-Type": "application/json",
  "Date": "Thu, 10 Aug 2023 07:45:10 GMT",
  "X-Deno": "Deno",
  "Powered-By": "Deno",
  "Content-Encoding": "gzip",
  "Set-Cookie": "__Secure-ID=123; Secure; Domain=example.com",
  "Content-Length": "150",
  "Vary": "Accept-Encoding, Accept, X-Requested-With",
});

Deno.bench("Headers.get", () => {
  headers.get("x-deno");
});
```
2023-08-21 17:00:44 +05:30
..
broadcast_channel 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
cache refactor(ext/cache): Remove custom shutdown and use fast async ops (#20107) 2023-08-09 17:45:35 +00:00
console 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
crypto 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
fetch perf(ext/headers): use regex.test instead of .exec (#20125) 2023-08-21 17:00:44 +05:30
ffi 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
fs chore: rename some helpers on the Fs trait (#20097) 2023-08-08 16:28:18 -04:00
http perf(http): use Cow<[u8]> for setting header (#20112) 2023-08-21 17:00:44 +05:30
io 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
kv 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
napi 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
net 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
node fix(node): implement TLSSocket._start (#20120) 2023-08-21 17:00:44 +05:30
tls 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
url 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
web fix(ext/timers): some timers are not resolved (#20055) 2023-08-10 04:01:35 +00:00
webidl 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00
websocket chore: upgrade fastwebsockets to 0.4.4 (#19089) 2023-08-10 09:59:06 +05:30
webstorage 1.36.0 (#20036) 2023-08-03 18:26:25 +02:00