0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-12 07:07:43 -04:00
deno/ext/http
Nathan Whitaker 69b59b2296
perf(http): instantiate generic functions in deno_http, increase opt-level for some more hyper deps (#28317)
results on my machine (Macbook pro w/ M3 Max)

canary (hello world):
```
❯ oha -c 125 -n 4000000 --no-tui --disable-compression http://localhost:8000
Summary:
  Success rate: 100.00%
  Total:        31.0160 secs
  Slowest:      0.0083 secs
  Fastest:      0.0005 secs
  Average:      0.0010 secs
  Requests/sec: 128965.6454

  Total data:   49.59 MiB
  Size/request: 13 B
  Size/sec:     1.60 MiB
```

this PR (hello world):
```
❯ oha -c 125 -n 4000000 --no-tui --disable-compression http://localhost:8000
Summary:
  Success rate: 100.00%
  Total:        28.4050 secs
  Slowest:      0.0085 secs
  Fastest:      0.0001 secs
  Average:      0.0009 secs
  Requests/sec: 140820.2060

  Total data:   49.59 MiB
  Size/request: 13 B
  Size/sec:     1.75 MiB
```

---

Two changes here:
- use `opt-level` 3 for some of hyper's deps, since profile overrides
are not transitive
- As noted in the [cargo
reference](https://doc.rust-lang.org/cargo/reference/profiles.html#overrides-and-generics)
generic functions _may_ be optimized at the opt-level of the
_instantiating_ crate, rather than the defining crate. So currently it's
possible that some of the functions in `deno_http` are being compiled at
a lower optimization level. This PR ensures the generics are
instantiated in `deno_http`, which theoretically should guarantee they
actually use opt-level 3.

To allow embedders to still provide a custom property extractor, I put
this behind a feature flag.
2025-02-27 10:07:11 -08:00
..
benches chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
00_serve.ts feat(http): add otel metrics (#28034) 2025-02-18 14:19:52 -08:00
01_http.js chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
02_websocket.ts chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
Cargo.toml perf(http): instantiate generic functions in deno_http, increase opt-level for some more hyper deps (#28317) 2025-02-27 10:07:11 -08:00
compressible.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
fly_accept_encoding.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
http_next.rs feat(http): add otel metrics (#28034) 2025-02-18 14:19:52 -08:00
lib.rs perf(http): instantiate generic functions in deno_http, increase opt-level for some more hyper deps (#28317) 2025-02-27 10:07:11 -08:00
network_buffered_stream.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
reader_stream.rs chore: Happy New Year 2025 (#27509) 2024-12-31 19:12:39 +00:00
README.md chore: add README to ext/http/ (#11958) 2021-09-08 20:48:28 +02:00
request_body.rs refactor: update deno_core for error refactor (#26867) 2025-01-08 14:52:32 -08:00
request_properties.rs refactor: update deno_core for error refactor (#26867) 2025-01-08 14:52:32 -08:00
response_body.rs refactor: update deno_core for error refactor (#26867) 2025-01-08 14:52:32 -08:00
service.rs chore: update to rust 1.85 (#28236) 2025-02-25 08:50:01 -08:00
websocket_upgrade.rs chore: update to rust 1.85 (#28236) 2025-02-25 08:50:01 -08:00

deno_http

This crate implements server-side HTTP based on primitives from the Fetch API.