mirror of
https://github.com/denoland/deno.git
synced 2025-03-12 15:17:56 -04:00

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.
62 lines
1.5 KiB
TOML
62 lines
1.5 KiB
TOML
# Copyright 2018-2025 the Deno authors. MIT license.
|
|
|
|
[package]
|
|
name = "deno_http"
|
|
version = "0.191.0"
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
readme = "README.md"
|
|
repository.workspace = true
|
|
description = "HTTP server implementation for Deno"
|
|
|
|
[features]
|
|
default = ["default_property_extractor"]
|
|
"__http_tracing" = []
|
|
default_property_extractor = []
|
|
|
|
[lib]
|
|
path = "lib.rs"
|
|
|
|
[[bench]]
|
|
name = "compressible"
|
|
harness = false
|
|
|
|
[dependencies]
|
|
async-compression = { workspace = true, features = ["tokio", "brotli", "gzip"] }
|
|
async-trait.workspace = true
|
|
base64.workspace = true
|
|
brotli.workspace = true
|
|
bytes.workspace = true
|
|
cache_control.workspace = true
|
|
deno_core.workspace = true
|
|
deno_error.workspace = true
|
|
deno_net.workspace = true
|
|
deno_telemetry.workspace = true
|
|
deno_websocket.workspace = true
|
|
flate2.workspace = true
|
|
http.workspace = true
|
|
http_v02.workspace = true
|
|
httparse.workspace = true
|
|
hyper.workspace = true
|
|
hyper-util.workspace = true
|
|
hyper_v014 = { workspace = true, features = ["server", "stream", "http1", "http2", "runtime"] }
|
|
itertools.workspace = true
|
|
memmem.workspace = true
|
|
mime.workspace = true
|
|
once_cell.workspace = true
|
|
percent-encoding.workspace = true
|
|
phf.workspace = true
|
|
pin-project.workspace = true
|
|
ring.workspace = true
|
|
scopeguard.workspace = true
|
|
serde.workspace = true
|
|
smallvec.workspace = true
|
|
thiserror.workspace = true
|
|
tokio.workspace = true
|
|
tokio-util = { workspace = true, features = ["io"] }
|
|
|
|
[dev-dependencies]
|
|
bencher.workspace = true
|
|
http-body-util.workspace = true
|
|
rand.workspace = true
|