tags -rX..Y is O(history * #tags) instead of O(history) at worst

Bug #857335 reported by Vincent Ladeuil
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Bazaar
Fix Released
High
Vincent Ladeuil
2.4
Fix Released
High
Vincent Ladeuil

Bug Description

In bzr.dev:

time bzr tags >/dev/null

real 0m0.869s
user 0m0.830s
sys 0m0.030s

time bzr tags -r1.. >/dev/null

real 0m23.459s
user 0m23.300s
sys 0m0.120s

I have a crude patch fixing that:

time ./bzr tags -r1.. >/dev/null

real 0m0.894s
user 0m0.850s
sys 0m0.040s

Related branches

Revision history for this message
Vincent Ladeuil (vila) wrote :

With emacs trunk @ revno 105885 (117328 revisions with merged revisions),
1136 tags with two of them on revisions not present in the branch ancestry
(i.e. 'bzr tags' display them with ??? 'bzr tags -r1..' filter them out):

time bzr tags -d ~/src/emacs/trunk >/dev/null

real 0m9.668s
user 0m9.500s
sys 0m0.110s

time bzr tags -d ~/src/emacs/trunk -r1.. >/dev/null

real 19m40.957s
user 19m35.990s
sys 0m2.070s

time ./bzr tags -d ~/src/emacs/trunk -r1.. >/dev/null

real 0m10.056s
user 0m9.970s
sys 0m0.060s

With gcc trunk @ revno 100609 (102370 revisions with merged revisions), 2663
tags, only 27 present in the branch history:

time bzr tags -d /caviar3/vila-tests/gcc/trunk >/dev/null

real 0m5.812s
user 0m5.680s
sys 0m0.120s

time bzr tags -r1.. -d /caviar3/vila-tests/gcc/trunk >/dev/null

real 74m37.331s
user 74m22.950s
sys 0m7.670s

time ./bzr tags -r1.. -d /caviar3/vila-tests/gcc/trunk >/dev/null

real 0m5.758s
user 0m5.660s
sys 0m0.080s

summary: - tags -rX..Y is O(something(X..Y)) instead of O(history) at worst
+ tags -rX..Y is O(history * #tags) instead of O(history) at worst
Vincent Ladeuil (vila)
Changed in bzr:
status: Confirmed → In Progress
Vincent Ladeuil (vila)
Changed in bzr:
milestone: none → 2.5b2
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.