summaryrefslogtreecommitdiff
path: root/bench_util/src
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@gmail.com>2022-03-24 11:23:40 +0100
committerGitHub <noreply@github.com>2022-03-24 11:23:40 +0100
commit6516130b0138ef382a0588f983287fb463222086 (patch)
treef250150295fb4d7a023c1fa7d92da621ac804340 /bench_util/src
parentc52d72e8e115f30be32cbb2a91a4c3aa117c328c (diff)
chore: drop src/ in bench_util & serde_v8 (#14097)
To align with conventions used in our other crates
Diffstat (limited to 'bench_util/src')
-rw-r--r--bench_util/src/js_runtime.rs120
-rw-r--r--bench_util/src/lib.rs7
-rw-r--r--bench_util/src/profiling.rs82
3 files changed, 0 insertions, 209 deletions
diff --git a/bench_util/src/js_runtime.rs b/bench_util/src/js_runtime.rs
deleted file mode 100644
index 06dd79fae..000000000
--- a/bench_util/src/js_runtime.rs
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
-use bencher::Bencher;
-use deno_core::v8;
-use deno_core::Extension;
-use deno_core::JsRuntime;
-use deno_core::RuntimeOptions;
-
-use crate::profiling::is_profiling;
-
-pub fn create_js_runtime(setup: impl FnOnce() -> Vec<Extension>) -> JsRuntime {
- JsRuntime::new(RuntimeOptions {
- extensions: setup(),
- ..Default::default()
- })
-}
-
-fn loop_code(iters: u64, src: &str) -> String {
- format!(r#"for(let i=0; i < {}; i++) {{ {} }}"#, iters, src,)
-}
-
-#[derive(Copy, Clone)]
-pub struct BenchOptions {
- pub benching_inner: u64,
- pub profiling_inner: u64,
- pub profiling_outer: u64,
-}
-
-impl Default for BenchOptions {
- fn default() -> Self {
- Self {
- benching_inner: 1_000,
- profiling_inner: 1_000,
- profiling_outer: 10_000,
- }
- }
-}
-
-pub fn bench_js_sync(
- b: &mut Bencher,
- src: &str,
- setup: impl FnOnce() -> Vec<Extension>,
-) {
- bench_js_sync_with(b, src, setup, Default::default())
-}
-
-pub fn bench_js_sync_with(
- b: &mut Bencher,
- src: &str,
- setup: impl FnOnce() -> Vec<Extension>,
- opts: BenchOptions,
-) {
- let mut runtime = create_js_runtime(setup);
- let scope = &mut runtime.handle_scope();
-
- // Increase JS iterations if profiling for nicer flamegraphs
- let inner_iters = if is_profiling() {
- opts.profiling_inner * opts.profiling_outer
- } else {
- opts.benching_inner
- };
- // Looped code
- let looped_src = loop_code(inner_iters, src);
-
- let code = v8::String::new(scope, looped_src.as_ref()).unwrap();
- let script = v8::Script::compile(scope, code, None).unwrap();
-
- // Run once if profiling, otherwise regular bench loop
- if is_profiling() {
- script.run(scope).unwrap();
- } else {
- b.iter(|| {
- script.run(scope).unwrap();
- });
- }
-}
-
-pub fn bench_js_async(
- b: &mut Bencher,
- src: &str,
- setup: impl FnOnce() -> Vec<Extension>,
-) {
- bench_js_async_with(b, src, setup, Default::default())
-}
-
-pub fn bench_js_async_with(
- b: &mut Bencher,
- src: &str,
- setup: impl FnOnce() -> Vec<Extension>,
- opts: BenchOptions,
-) {
- let mut runtime = create_js_runtime(setup);
- let tokio_runtime = tokio::runtime::Builder::new_current_thread()
- .enable_all()
- .build()
- .unwrap();
-
- // Looped code
- let inner_iters = if is_profiling() {
- opts.profiling_inner
- } else {
- opts.benching_inner
- };
- let looped = loop_code(inner_iters, src);
- let src = looped.as_ref();
-
- if is_profiling() {
- for _ in 0..opts.profiling_outer {
- tokio_runtime.block_on(inner_async(src, &mut runtime));
- }
- } else {
- b.iter(|| {
- tokio_runtime.block_on(inner_async(src, &mut runtime));
- });
- }
-}
-
-async fn inner_async(src: &str, runtime: &mut JsRuntime) {
- runtime.execute_script("inner_loop", src).unwrap();
- runtime.run_event_loop(false).await.unwrap();
-}
diff --git a/bench_util/src/lib.rs b/bench_util/src/lib.rs
deleted file mode 100644
index 1dfb06ae0..000000000
--- a/bench_util/src/lib.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
-mod js_runtime;
-mod profiling;
-
-pub use bencher;
-pub use js_runtime::*;
-pub use profiling::*; // Exports bench_or_profile! macro
diff --git a/bench_util/src/profiling.rs b/bench_util/src/profiling.rs
deleted file mode 100644
index 26d8d8fd6..000000000
--- a/bench_util/src/profiling.rs
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
-use bencher::{DynBenchFn, StaticBenchFn, TestDescAndFn, TestOpts};
-
-pub fn is_profiling() -> bool {
- std::env::var("PROFILING").is_ok()
-}
-
-#[macro_export]
-// Tweaked and copied from https://github.com/bluss/bencher/blob/master/macros.rs
-macro_rules! bench_or_profile {
- ($($group_name:path),+) => {
- fn main() {
- use $crate::bencher::TestOpts;
- use $crate::bencher::run_tests_console;
- let mut test_opts = TestOpts::default();
- // check to see if we should filter:
- if let Some(arg) = ::std::env::args().skip(1).find(|arg| *arg != "--bench") {
- test_opts.filter = Some(arg);
- }
- let mut benches = Vec::new();
- $(
- benches.extend($group_name());
- )+
-
- if $crate::is_profiling() {
- // Run profling
- $crate::run_profiles(&test_opts, benches);
- } else {
- // Run benches
- run_tests_console(&test_opts, benches).unwrap();
- }
- }
- };
- ($($group_name:path,)+) => {
- bench_or_profile!($($group_name),+);
- };
-}
-
-pub fn run_profiles(opts: &TestOpts, tests: Vec<TestDescAndFn>) {
- let tests = filter_tests(opts, tests);
- // let decs = tests.iter().map(|t| t.desc.clone()).collect();
-
- println!();
- for b in tests {
- println!("Profiling {}", b.desc.name);
- run_profile(b);
- }
- println!();
-}
-
-fn run_profile(test: TestDescAndFn) {
- match test.testfn {
- DynBenchFn(bencher) => {
- bencher::bench::run_once(|harness| bencher.run(harness));
- }
- StaticBenchFn(benchfn) => {
- bencher::bench::run_once(benchfn);
- }
- };
-}
-
-// Copied from https://github.com/bluss/bencher/blob/master/lib.rs
-fn filter_tests(
- opts: &TestOpts,
- tests: Vec<TestDescAndFn>,
-) -> Vec<TestDescAndFn> {
- let mut filtered = tests;
-
- // Remove tests that don't match the test filter
- filtered = match opts.filter {
- None => filtered,
- Some(ref filter) => filtered
- .into_iter()
- .filter(|test| test.desc.name.contains(&filter[..]))
- .collect(),
- };
-
- // Sort the tests alphabetically
- filtered.sort_by(|t1, t2| t1.desc.name.cmp(&t2.desc.name));
-
- filtered
-}