summaryrefslogtreecommitdiff
path: root/extensions/url/benches/url_ops.rs
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/url/benches/url_ops.rs')
-rw-r--r--extensions/url/benches/url_ops.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/extensions/url/benches/url_ops.rs b/extensions/url/benches/url_ops.rs
new file mode 100644
index 000000000..8b3cf2705
--- /dev/null
+++ b/extensions/url/benches/url_ops.rs
@@ -0,0 +1,35 @@
+use bencher::{benchmark_group, benchmark_main, Bencher};
+
+use deno_core::v8;
+use deno_core::JsRuntime;
+use deno_core::RuntimeOptions;
+
+fn create_js_runtime() -> JsRuntime {
+ let mut runtime = JsRuntime::new(RuntimeOptions {
+ extensions: vec![deno_url::init()],
+ ..Default::default()
+ });
+
+ 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 scope = &mut runtime.handle_scope();
+ 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_runtime_js(b, r#"new URL(`http://www.google.com/`);"#);
+}
+
+benchmark_group!(benches, bench_url_parse,);
+benchmark_main!(benches);