diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-01-11 00:37:10 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-01-11 00:45:06 -0500 |
commit | 705e83096feda7976ed2fc1bb539e01b1eabd6a0 (patch) | |
tree | 37314c1f0279bf01b399b60851d7f2abe14fc8b5 | |
parent | fc73d9293579ff76800259090b6c5e545604827a (diff) |
Print commit being tested
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | src/main.rs | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs index 9354c88..20b668d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -121,22 +121,22 @@ fn pick_commit_to_test(results: &TestResultsVec, test: &str) -> Option<usize> { return Some(results.len() - 1); } - let mut last_idx: usize = 0; - let mut last_val: f32 = 0.0; + let mut last_idx: usize = 0; + let mut last_val: f32 = 0.0; - let mut missing_idx: Option<usize> = None; - let mut missing_delta: f32 = 0.0; + let mut gap: Option<(usize, usize)> = None; + let mut gap_delta: f32 = 0.0; for (idx, i) in results.iter().enumerate() { let v = i.data_points.get(test); if let Some(v) = v { if last_idx + 1 < idx { - let delta = v / last_val; + let delta = (last_val - v) / v; - if delta > missing_delta { - missing_idx = Some((idx + last_idx) / 2); - missing_delta = delta; + if delta < gap_delta { + gap = Some((last_idx, idx)); + gap_delta = delta; } } @@ -145,7 +145,27 @@ fn pick_commit_to_test(results: &TestResultsVec, test: &str) -> Option<usize> { } } - missing_idx + if let Some(gap) = gap { + let idx = (gap.0 + gap.1) / 2; + + println!("Bisecting regression by {:.1}%", gap_delta * 100.0); + + println!("{} {} {:89} {}", gap.0, + results[gap.0].commit[..10].yellow(), + results[gap.0].commitmsg, + results[gap.0].data_points.get(test).unwrap()); + + println!("{} {} {:89}", idx, + results[idx].commit[..10].yellow(), + results[idx].commitmsg); + + println!("{} {} {:89} {}", gap.1, + results[gap.1].commit[..10].yellow(), + results[gap.1].commitmsg, + results[gap.1].data_points.get(test).unwrap()); + } + + gap.map(|x| (x.0 + x.1) / 2) } fn parse_test_output(output: &str) -> Option<f32> { |