summaryrefslogtreecommitdiff
path: root/op_crates/url/benches/url_ops.rs
diff options
context:
space:
mode:
Diffstat (limited to 'op_crates/url/benches/url_ops.rs')
-rw-r--r--op_crates/url/benches/url_ops.rs53
1 files changed, 41 insertions, 12 deletions
diff --git a/op_crates/url/benches/url_ops.rs b/op_crates/url/benches/url_ops.rs
index fc2742fbd..17029b9c6 100644
--- a/op_crates/url/benches/url_ops.rs
+++ b/op_crates/url/benches/url_ops.rs
@@ -1,29 +1,58 @@
+use bencher::{benchmark_group, benchmark_main, Bencher};
+
use deno_core::op_sync;
+use deno_core::v8;
use deno_core::JsRuntime;
-use bench_util::bench_js_sync;
-use bench_util::bench_or_profile;
-use bench_util::bencher::{benchmark_group, Bencher};
-
-fn setup(rt: &mut JsRuntime) {
- rt.register_op("op_url_parse", op_sync(deno_url::op_url_parse));
- rt.register_op(
+fn create_js_runtime() -> JsRuntime {
+ let mut runtime = JsRuntime::new(Default::default());
+ runtime.register_op("op_url_parse", op_sync(deno_url::op_url_parse));
+ runtime.register_op(
"op_url_parse_search_params",
op_sync(deno_url::op_url_parse_search_params),
);
- rt.register_op(
+ runtime.register_op(
"op_url_stringify_search_params",
op_sync(deno_url::op_url_stringify_search_params),
);
- deno_url::init(rt);
- rt.execute("setup", "const { URL } = globalThis.__bootstrap.url;")
+ runtime
+ .execute(
+ "bootstrap",
+ "globalThis.__bootstrap = (globalThis.__bootstrap || {});",
+ )
+ .unwrap();
+ deno_url::init(&mut runtime);
+ runtime
+ .execute(
+ "init",
+ r#"
+ Deno.core.ops();
+ Deno.core.registerErrorClass('Error', Error);
+ "#,
+ )
+ .unwrap();
+ runtime
+ .execute("setup", "const { URL } = globalThis.__bootstrap.url;")
.unwrap();
+
+ runtime
+}
+
+pub fn bench_runtime_js(b: &mut Bencher, src: &str) {
+ let mut runtime = create_js_runtime();
+ let context = runtime.global_context();
+ let scope = &mut v8::HandleScope::with_context(runtime.v8_isolate(), context);
+ let code = v8::String::new(scope, src).unwrap();
+ let script = v8::Script::compile(scope, code, None).unwrap();
+ b.iter(|| {
+ script.run(scope).unwrap();
+ });
}
fn bench_url_parse(b: &mut Bencher) {
- bench_js_sync(b, r#"new URL(`http://www.google.com/${i}`);"#, setup);
+ bench_runtime_js(b, r#"new URL(`http://www.google.com/`);"#);
}
benchmark_group!(benches, bench_url_parse,);
-bench_or_profile!(benches);
+benchmark_main!(benches);