use deno_bench_util::bench_js_sync;
use deno_bench_util::bench_or_profile;
use deno_bench_util::bencher::Bencher;
use deno_bench_util::bencher::benchmark_group;
use deno_core::Extension;
fn setup() -> Vec<Extension> {
deno_core::extension!(
bench_setup,
esm_entry_point = "ext:bench_setup/setup",
esm = [
"ext:deno_fetch/20_headers.js" = "20_headers.js",
"ext:bench_setup/setup" = {
source = r#"
import { Headers } from "ext:deno_fetch/20_headers.js";
globalThis.Headers = Headers;
globalThis.makeHeaders = () => new Headers({
"content-type": "application/json",
"content-length": "1234",
"cache-control": "no-cache",
"x-request-id": "abc-123",
"accept-encoding": "gzip",
"x-forwarded-for": "10.0.0.1",
"user-agent": "deno-bench/1.0",
});
globalThis.h7 = makeHeaders();
"#
},
]
);
vec![
deno_webidl::deno_webidl::init(),
deno_web::deno_web::init(
deno_web::BlobStore::default_arc(),
None,
Default::default(),
Default::default(),
),
bench_setup::init(),
]
}
fn bench_construct_headers_7(b: &mut Bencher) {
bench_js_sync(b, r#"makeHeaders();"#, setup);
}
fn bench_has_hit(b: &mut Bencher) {
bench_js_sync(b, r#"h7.has("x-request-id");"#, setup);
}
fn bench_has_miss(b: &mut Bencher) {
bench_js_sync(b, r#"h7.has("authorization");"#, setup);
}
fn bench_set_replace(b: &mut Bencher) {
bench_js_sync(b, r#"h7.set("x-request-id", "xyz-456");"#, setup);
}
fn bench_get_hit(b: &mut Bencher) {
bench_js_sync(b, r#"h7.get("x-request-id");"#, setup);
}
fn bench_get_miss(b: &mut Bencher) {
bench_js_sync(b, r#"h7.get("authorization");"#, setup);
}
benchmark_group!(
benches,
bench_construct_headers_7,
bench_has_hit,
bench_has_miss,
bench_set_replace,
bench_get_hit,
bench_get_miss,
);
bench_or_profile!(benches);