[PATCH 2 of 2] reachableroots: use baseset lazy sorting

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Aug 24 17:41:21 CDT 2015



On 08/24/2015 06:45 AM, Augie Fackler wrote:
> On Sat, Aug 22, 2015 at 08:33:44PM +0900, Yuya Nishihara wrote:
>> On Fri, 21 Aug 2015 15:58:42 -0700, Pierre-Yves David wrote:
>>> # HG changeset patch
>>> # User Pierre-Yves David <pierre-yves.david at fb.com>
>>> # Date 1440116601 25200
>>> #      Thu Aug 20 17:23:21 2015 -0700
>>> # Node ID 1635f6a58066e632e3818cf9e9bf0c5aacb3e9f4
>>> # Parent  76e8706080029160e4b71b043ac20b2760516eab
>>> reachableroots: use baseset lazy sorting
>>>
>>> smartset sorting is lazy (so faster in some case) and better (informs that the
>>> set is sorted allowing some optimisation). So we rely on it directly.
>>>
>>> Some test output are updated because we now have more information (ordering).
>>>
>>> diff --git a/mercurial/changelog.py b/mercurial/changelog.py
>>> --- a/mercurial/changelog.py
>>> +++ b/mercurial/changelog.py
>>> @@ -184,12 +184,14 @@ class changelog(revlog.revlog):
>>>           # XXX need filtering too
>>>           self.rev(self.node(0))
>>>           return self._nodecache
>>>
>>>       def reachableroots(self, minroot, heads, roots, includepath=False):
>>> -        return revset.baseset(sorted(
>>> -            self.index.reachableroots(minroot, heads, roots, includepath)))
>>> +        rroots = self.index.reachableroots(minroot, heads, roots, includepath)
>>> +        rroots = revset.baseset(rroots)
>>> +        rroots.sort()
>>> +        return rroots
>>
>> The series looks good to me.
>>
>> This will save ~10% time of "0::tip" because baseset can sort list in place.
>
> Nice. Queued.

This break the --pure tests, I've a fix coming.


-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list