Skip to content

Commit df06b24

Browse files
committed
improve performance of commit-graph variant ever-so-slightly
1 parent 6fdaafa commit df06b24

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

gix-revision/src/merge_base.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,24 @@ pub(crate) mod function {
4444
others: &[ObjectId],
4545
graph: &mut Graph<'_, '_, Flags>,
4646
) -> Result<Option<Vec<ObjectId>>, Error> {
47-
let _span = gix_trace::coarse!("gix_revision::merge_base()", ?first, ?others,);
47+
let _span = gix_trace::coarse!(
48+
"gix_revision::merge_base()",
49+
?first,
50+
?others,
51+
paint_graph_size = gix_trace::field::Empty,
52+
cleanup_graph_size = gix_trace::field::Empty,
53+
);
4854
if others.is_empty() || others.contains(&first) {
4955
return Ok(Some(vec![first]));
5056
}
5157

58+
graph.clear();
5259
let bases = paint_down_to_common(first, others, graph)?;
60+
_span.record("paint_graph_size", gix_trace::field::display(graph.len()));
5361
graph.clear();
5462

5563
let bases = remove_redundant(&bases, graph)?;
64+
_span.record("cleanup_graph_size", gix_trace::field::display(graph.len()));
5665
Ok((!bases.is_empty()).then_some(bases))
5766
}
5867

@@ -62,6 +71,7 @@ pub(crate) mod function {
6271
commits: &[(ObjectId, GenThenTime)],
6372
graph: &mut Graph<'_, '_, Flags>,
6473
) -> Result<Vec<ObjectId>, Error> {
74+
let _span = gix_trace::detail!("gix_revision::remove_redundant()", num_commits = %commits.len());
6575
if commits.is_empty() {
6676
return Ok(Vec::new());
6777
}
@@ -217,11 +227,10 @@ pub(crate) mod function {
217227
type Error = gix_object::decode::Error;
218228

219229
fn try_from(commit: LazyCommit<'_, '_>) -> Result<Self, Self::Error> {
230+
let (generation, timestamp) = commit.generation_and_timestamp()?;
220231
Ok(GenThenTime {
221-
generation: commit
222-
.generation()
223-
.unwrap_or(gix_commitgraph::GENERATION_NUMBER_INFINITY),
224-
time: commit.committer_timestamp()?,
232+
generation: generation.unwrap_or(gix_commitgraph::GENERATION_NUMBER_INFINITY),
233+
time: timestamp,
225234
})
226235
}
227236
}

0 commit comments

Comments
 (0)