mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
benchmarks: fix exec_time and latency benchmarks (#15155)
This commit is contained in:
parent
989c723130
commit
88c36fd414
2 changed files with 19 additions and 10 deletions
|
@ -162,7 +162,7 @@ const RESULT_KEYS: &[&str] =
|
||||||
fn run_exec_time(
|
fn run_exec_time(
|
||||||
deno_exe: &Path,
|
deno_exe: &Path,
|
||||||
target_dir: &Path,
|
target_dir: &Path,
|
||||||
) -> Result<HashMap<String, HashMap<String, i64>>> {
|
) -> Result<HashMap<String, HashMap<String, f64>>> {
|
||||||
let hyperfine_exe = test_util::prebuilt_tool_path("hyperfine");
|
let hyperfine_exe = test_util::prebuilt_tool_path("hyperfine");
|
||||||
|
|
||||||
let benchmark_file = target_dir.join("hyperfine_results.json");
|
let benchmark_file = target_dir.join("hyperfine_results.json");
|
||||||
|
@ -203,7 +203,7 @@ fn run_exec_time(
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut results = HashMap::<String, HashMap<String, i64>>::new();
|
let mut results = HashMap::<String, HashMap<String, f64>>::new();
|
||||||
let hyperfine_results = read_json(benchmark_file)?;
|
let hyperfine_results = read_json(benchmark_file)?;
|
||||||
for ((name, _, _), data) in EXEC_TIME_BENCHMARKS.iter().zip(
|
for ((name, _, _), data) in EXEC_TIME_BENCHMARKS.iter().zip(
|
||||||
hyperfine_results
|
hyperfine_results
|
||||||
|
@ -220,7 +220,7 @@ fn run_exec_time(
|
||||||
data
|
data
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter(|(key, _)| RESULT_KEYS.contains(&key.as_str()))
|
.filter(|(key, _)| RESULT_KEYS.contains(&key.as_str()))
|
||||||
.map(|(key, val)| (key, val.as_f64().unwrap() as i64))
|
.map(|(key, val)| (key, val.as_f64().unwrap()))
|
||||||
.collect(),
|
.collect(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -382,11 +382,11 @@ struct BenchResult {
|
||||||
// TODO(ry) The "benchmark" benchmark should actually be called "exec_time".
|
// TODO(ry) The "benchmark" benchmark should actually be called "exec_time".
|
||||||
// When this is changed, the historical data in gh-pages branch needs to be
|
// When this is changed, the historical data in gh-pages branch needs to be
|
||||||
// changed too.
|
// changed too.
|
||||||
benchmark: HashMap<String, HashMap<String, i64>>,
|
benchmark: HashMap<String, HashMap<String, f64>>,
|
||||||
binary_size: HashMap<String, i64>,
|
binary_size: HashMap<String, i64>,
|
||||||
bundle_size: HashMap<String, i64>,
|
bundle_size: HashMap<String, i64>,
|
||||||
cargo_deps: usize,
|
cargo_deps: usize,
|
||||||
max_latency: HashMap<String, i64>,
|
max_latency: HashMap<String, f64>,
|
||||||
max_memory: HashMap<String, i64>,
|
max_memory: HashMap<String, i64>,
|
||||||
lsp_exec_time: HashMap<String, i64>,
|
lsp_exec_time: HashMap<String, i64>,
|
||||||
req_per_sec: HashMap<String, i64>,
|
req_per_sec: HashMap<String, i64>,
|
||||||
|
@ -489,7 +489,7 @@ async fn main() -> Result<()> {
|
||||||
new_data.req_per_sec = req_per_sec;
|
new_data.req_per_sec = req_per_sec;
|
||||||
let max_latency = stats
|
let max_latency = stats
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(name, result)| (name.clone(), result.latency as i64))
|
.map(|(name, result)| (name.clone(), result.latency))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
reporter.write("max_latency", &max_latency);
|
reporter.write("max_latency", &max_latency);
|
||||||
|
|
|
@ -17,9 +17,9 @@ static GIT_HASH: Lazy<String> = Lazy::new(|| {
|
||||||
});
|
});
|
||||||
|
|
||||||
#[derive(serde::Serialize)]
|
#[derive(serde::Serialize)]
|
||||||
struct Metric {
|
struct Metric<T: serde::Serialize> {
|
||||||
name: String,
|
name: String,
|
||||||
value: i64,
|
value: T,
|
||||||
sha1: String,
|
sha1: String,
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
type_: String,
|
type_: String,
|
||||||
|
@ -62,7 +62,12 @@ impl Reporter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_one(&mut self, type_: &str, name: &str, value: i64) {
|
pub fn write_one<T: serde::Serialize>(
|
||||||
|
&mut self,
|
||||||
|
type_: &str,
|
||||||
|
name: &str,
|
||||||
|
value: T,
|
||||||
|
) {
|
||||||
self
|
self
|
||||||
.wtr
|
.wtr
|
||||||
.serialize(Metric {
|
.serialize(Metric {
|
||||||
|
@ -75,7 +80,11 @@ impl Reporter {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write(&mut self, type_: &str, hashmap: &HashMap<String, i64>) {
|
pub fn write<T: serde::Serialize + Copy>(
|
||||||
|
&mut self,
|
||||||
|
type_: &str,
|
||||||
|
hashmap: &HashMap<String, T>,
|
||||||
|
) {
|
||||||
for (name, value) in hashmap {
|
for (name, value) in hashmap {
|
||||||
self.write_one(type_, name, *value);
|
self.write_one(type_, name, *value);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue