summaryrefslogtreecommitdiff
path: root/bench_util
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2021-05-19 19:41:23 +0200
committerGitHub <noreply@github.com>2021-05-19 19:41:23 +0200
commit24da0aa37db14b0d40815222cf25b34055b13a6a (patch)
treed421cad2033e44bc0bc07521163613c3b1dd2da0 /bench_util
parentdf7639c09664207df4aeb1e66e4bad405eed8cc3 (diff)
tooling: re-enable bench_util (#10674)
Diffstat (limited to 'bench_util')
-rw-r--r--bench_util/Cargo.toml8
-rw-r--r--bench_util/benches/op_baseline.rs47
2 files changed, 53 insertions, 2 deletions
diff --git a/bench_util/Cargo.toml b/bench_util/Cargo.toml
index f3e1140c8..80886d818 100644
--- a/bench_util/Cargo.toml
+++ b/bench_util/Cargo.toml
@@ -1,7 +1,7 @@
# Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
[package]
-name = "bench_util"
-version = "0.0.0"
+name = "deno_bench_util"
+version = "0.1.0"
authors = ["the Deno authors"]
edition = "2018"
description = "Bench and profiling utilities for deno crates"
@@ -16,3 +16,7 @@ publish = false
bencher = "0.1"
deno_core = { version = "0.88.0", path = "../core" }
tokio = { version = "1.6.0", features = ["full"] }
+
+[[bench]]
+name = "op_baseline"
+harness = false
diff --git a/bench_util/benches/op_baseline.rs b/bench_util/benches/op_baseline.rs
new file mode 100644
index 000000000..ecce90bec
--- /dev/null
+++ b/bench_util/benches/op_baseline.rs
@@ -0,0 +1,47 @@
+use deno_bench_util::bench_or_profile;
+use deno_bench_util::bencher::{benchmark_group, Bencher};
+use deno_bench_util::{bench_js_async, bench_js_sync};
+
+use deno_core::error::AnyError;
+use deno_core::op_async;
+use deno_core::op_sync;
+use deno_core::serialize_op_result;
+use deno_core::JsRuntime;
+use deno_core::Op;
+use deno_core::OpState;
+
+use std::cell::RefCell;
+use std::rc::Rc;
+
+fn setup(runtime: &mut JsRuntime) {
+ runtime.register_op("pi_json", op_sync(|_, _: (), _: ()| Ok(314159)));
+ runtime.register_op("pi_async", op_async(op_pi_async));
+ runtime.register_op("nop", |state, _| {
+ Op::Sync(serialize_op_result(Ok(9), state))
+ });
+ runtime.sync_ops_cache();
+}
+
+// this is a function since async closures aren't stable
+async fn op_pi_async(
+ _: Rc<RefCell<OpState>>,
+ _: (),
+ _: (),
+) -> Result<i64, AnyError> {
+ Ok(314159)
+}
+
+fn bench_op_pi_json(b: &mut Bencher) {
+ bench_js_sync(b, r#"Deno.core.opSync("pi_json", null);"#, setup);
+}
+
+fn bench_op_nop(b: &mut Bencher) {
+ bench_js_sync(b, r#"Deno.core.opSync("nop", null, null, null);"#, setup);
+}
+
+fn bench_op_async(b: &mut Bencher) {
+ bench_js_async(b, r#"Deno.core.opAsync("pi_async", null);"#, setup);
+}
+
+benchmark_group!(benches, bench_op_pi_json, bench_op_nop, bench_op_async);
+bench_or_profile!(benches);