diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-07-17 23:17:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-17 21:17:28 +0000 |
commit | 298e4149368b23fee573fa27f1a00e0c50828c8c (patch) | |
tree | 0c19422b12b3d04f944bddfb99c891b6d59c45b0 /cli/ops | |
parent | 4ebe3bdb06a4d539cc8991e1241aa3150100f866 (diff) |
fix(bench): run warmup benchmark to break JIT bias (#19844)
Closes https://github.com/denoland/deno/issues/15277
This commit adds a single "warmup" run of empty function when running
`deno bench`.
This change will break so-called "JIT bias" which makes V8 optimize the
first function
and then bail out of optimization on second function. In essence the
"warmup" function
is getting optimized and then all user benches are bailed out of
optimization.
Diffstat (limited to 'cli/ops')
-rw-r--r-- | cli/ops/bench.rs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/cli/ops/bench.rs b/cli/ops/bench.rs index f569a8cbb..0f7509751 100644 --- a/cli/ops/bench.rs +++ b/cli/ops/bench.rs @@ -101,6 +101,8 @@ struct BenchInfo<'s> { group: Option<String>, ignore: bool, only: bool, + #[serde(default)] + warmup: bool, } #[derive(Debug, Serialize)] @@ -128,6 +130,7 @@ fn op_register_bench<'a>( group: info.group, ignore: info.ignore, only: info.only, + warmup: info.warmup, }; let function: v8::Local<v8::Function> = info.function.v8_value.try_into()?; let function = v8::Global::new(scope, function); |