mirror of
https://github.com/denoland/deno.git
synced 2024-11-29 16:30:56 -05:00
d5634164cb
Closes https://github.com/denoland/deno/issues/2699 Closes https://github.com/denoland/deno/issues/2347 Uses unstable rustfmt features. Since dprint invokes `rustfmt` we do not need to switch the cargo toolchain to nightly. Do we care about formatting stability of our codebase across Rust versions? (I don't)
50 lines
1.1 KiB
Rust
50 lines
1.1 KiB
Rust
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
|
|
|
use deno_bench_util::bench_js_async;
|
|
use deno_bench_util::bench_js_sync;
|
|
use deno_bench_util::bench_or_profile;
|
|
use deno_bench_util::bencher::benchmark_group;
|
|
use deno_bench_util::bencher::Bencher;
|
|
|
|
use deno_core::op;
|
|
use deno_core::Extension;
|
|
|
|
fn setup() -> Vec<Extension> {
|
|
vec![Extension::builder("bench_setup")
|
|
.ops(vec![
|
|
op_pi_json::decl(),
|
|
op_pi_async::decl(),
|
|
op_nop::decl(),
|
|
])
|
|
.build()]
|
|
}
|
|
|
|
#[op]
|
|
fn op_nop() {}
|
|
|
|
#[op]
|
|
fn op_pi_json() -> i64 {
|
|
314159
|
|
}
|
|
|
|
// this is a function since async closures aren't stable
|
|
#[op]
|
|
async fn op_pi_async() -> i64 {
|
|
314159
|
|
}
|
|
|
|
fn bench_op_pi_json(b: &mut Bencher) {
|
|
bench_js_sync(b, r#"Deno.core.ops.op_pi_json();"#, setup);
|
|
}
|
|
|
|
fn bench_op_nop(b: &mut Bencher) {
|
|
bench_js_sync(b, r#"Deno.core.ops.op_nop();"#, setup);
|
|
}
|
|
|
|
fn bench_op_async(b: &mut Bencher) {
|
|
bench_js_async(b, r#"Deno.core.opAsync("op_pi_async");"#, setup);
|
|
}
|
|
|
|
benchmark_group!(benches, bench_op_pi_json, bench_op_nop, bench_op_async,);
|
|
|
|
bench_or_profile!(benches);
|