HomePhabricator

revlog: speed up isancestor

Description

revlog: speed up isancestor

Currently, it is implemented on top of commonancestorsheads.
Implement it on top of reachableroots instead, as reachableroots could
stop walking the graph much sooner than commonancestorsheads.

Measuring repo.changelog.isancestorrev on two revisions in a private repository:
before: ! wall 0.005175 comb 0.010000 user 0.010000 sys 0.000000 (best of 550)
after : ! wall 0.000072 comb 0.000000 user 0.000000 sys 0.000000 (best of 36199)

When hg does this kind of operations 1500 times in pull ->
bookmarks.comparebookmarks -> bookmarks.validdest, that's 11s that
drop from the --profile output.

Differential Revision: https://phab.mercurial-scm.org/D6506

Details

Committed
valentin.gatienbaronJun 10 2019, 1:23 PM
Differential Revision
D6506: revlog: speed up isancestor
Parents
rHG3e42fc243741: dagop: fix documentation of reachableroots
Branches
Unknown
Tags
Unknown