diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-01-10 07:56:19 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-01-10 07:56:19 -0500 |
commit | c30a74571b52703a2623b37833bdbe0e734f9ef9 (patch) | |
tree | 9b31cf7f01f2fd0c18a43befa59e91ec729c4487 | |
parent | 6a852678bd1ae36cd46a7fecd19fe4cdcce78b45 (diff) |
kill results_insert()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | src/main.rs | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/src/main.rs b/src/main.rs index 7fe8539..5f00577 100644 --- a/src/main.rs +++ b/src/main.rs @@ -73,17 +73,6 @@ fn results_new(repo: &git2::Repository, range: &str) -> Result<TestResultsVec, g Ok(data_points) } -fn results_insert(results: &mut TestResultsVec, commit: &str, test: &str, v: f32) { - for i in results.iter_mut() { - if i.commit == commit { - i.data_points.insert(test.to_string(), v); - return; - } - } - - panic!("commit {} not found", commit); -} - fn results_mapped(r: &TestResultsVec) -> TestResultsMap { let mut mapped = HashMap::new(); @@ -106,50 +95,42 @@ fn results_merge(r1: &mut TestResultsVec, r2: &TestResultsMap) { } } -fn pick_commit_to_test(results: &TestResultsVec, test: &str) -> Option<String> { +fn pick_commit_to_test(results: &TestResultsVec, test: &str) -> Option<usize> { let i = results.first().unwrap(); if i.data_points.get(test).is_none() { - return Some(i.commit.clone()); + return Some(0); } let i = results.last().unwrap(); if i.data_points.get(test).is_none() { - return Some(i.commit.clone()); + return Some(results.len() - 1); } - let mut idx: i32 = 0; - let mut last_idx: i32 = -1; + let mut last_idx: usize = 0; let mut last_val: f32 = 0.0; - let mut missing_idx: i32 = 0; + let mut missing_idx: Option<usize> = None; let mut missing_delta: f32 = 0.0; - for i in results { + for (idx, i) in results.iter().enumerate() { let v = i.data_points.get(test); if let Some(v) = v { - if last_idx + 1 != idx { + if last_idx + 1 < idx { let delta = v / last_val; if delta > missing_delta { - missing_idx = (idx + last_idx) / 2; + missing_idx = Some((idx + last_idx) / 2); missing_delta = delta; } } last_idx = idx; last_val = *v; - } else { } - - idx += 1; } - if missing_idx != 0 { - Some(results[missing_idx as usize].commit.clone()) - } else { - None - } + missing_idx } fn parse_test_output(output: &str) -> Option<f32> { @@ -173,10 +154,10 @@ fn run_tests(repo: &git2::Repository, range: &str, test: &str) { results_merge(&mut results, &existing); } - while let Some(commit) = pick_commit_to_test(&results, test) { + while let Some(idx) = pick_commit_to_test(&results, test) { let output = Command::new("benchmark-git-commit.sh") .arg(test) - .arg(&commit) + .arg(&results[idx].commit) .output() .unwrap() .stdout; @@ -187,7 +168,7 @@ fn run_tests(repo: &git2::Repository, range: &str, test: &str) { let result = parse_test_output(output); if let Some(result) = result { - results_insert(&mut results, &commit, test, result); + results[idx].data_points.insert(test.to_string(), result); results_write(RESULTS, &results).unwrap(); } else { |