[PATCH 2 of 2] rust-cpython: using rustext.dagop.headrevs in revlog
Georges Racinet
georges.racinet at octobus.net
Wed Jan 16 13:23:58 EST 2019
On 1/16/19 7:15 PM, Georges Racinet wrote:
> # HG changeset patch
> # User Georges Racinet <georges.racinet at octobus.net>
> # Date 1547651966 -3600
> # Wed Jan 16 16:19:26 2019 +0100
> # Node ID 234c106610004aff294268ccda82238164f91f64
> # Parent f32e7d90db76879096f216f23ebbe75772b0201e
> # EXP-Topic revset.predicates
> rust-cpython: using rustext.dagop.headrevs in revlog
Note: this one depends on a previous series by Boris Feld, mamely on the
following changeset
# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1547482251 -3600
# Mon Jan 14 17:10:51 2019 +0100
# Node ID 39a2761dc425aaa14c00b69bce5a4c68a780ff50
# Parent c9906eb8d45f2e80157ca441c1ad01987d8e198a
The measurements are taken with its later
8b13377cb4cb8789429693653091772029d54b15 (dagop: minor python
optimization to `headrevs`) as baseline.
Regards,
>
> As with the previous oxidation series, revlog plays the role
> of the factory, either using its parents function, or passing the
> index.
>
> In most of the cases about heads revsetbenchmarks, this seems to be
> either neutral or an improvement. There aren't many cases where it's
> actually slower and they don't look too bad.
>
> Result by revset
> ================
>
> Revision:
> 0) parent of this changeset: rust-cpython: binding for headrevs()
> 1) this changeset: rust-cpython: using rustext.dagop.headrevs in revlog
>
> revset #0: heads(commonancestors(last(head(), 2)))
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 0.002913 0.002845 0.002976 0.002953 0.002978 0.002894 0.002946 0.003127 0.002949 0.002977 0.003074
> 1) 0.002830 0.002900 0.002942 0.003066 0.002994 0.002881 0.003041 0.002973 0.002942 0.003008 0.003012
>
> revset #1: heads(commonancestors(head()))
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 0.124867 0.117328 0.117523 0.117500 0.114464 0.128686 0.121959 0.119129 0.114949 0.124387 0.119485
> 1) 0.125079 0.124376 106% 0.114437 0.118340 0.124021 108% 0.123225 0.126748 0.122144 0.126391 109% 0.116410 93% 0.121342
>
> revset #2: heads(all())
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 0.080521 0.079977 0.079199 0.079454 0.084119 0.079578 0.083369 0.080215 0.080788 0.079157 0.080142
> 1) 0.033069 41% 0.032773 40% 0.033060 41% 0.032708 41% 0.032987 39% 0.032458 40% 0.033019 39% 0.032306 40% 0.032341 40% 0.033317 42% 0.032645 40%
>
> revset #3: heads(-10000:-1)
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 0.008496 0.008642 0.008398 0.008665 0.008896 0.008857 0.008864 0.009749 0.009690 0.009445 0.008902
> 1) 0.002694 31% 0.002678 30% 0.002692 32% 0.002766 31% 0.002753 30% 0.002931 33% 0.003023 34% 0.002787 28% 0.002735 28% 0.002789 29% 0.002943 33%
>
> revset #4: (-5000:-1000) and heads(-10000:-1)
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 0.008835 0.008711 0.008920 0.008824 0.008948 0.009422 0.009073 0.008751 0.009244 0.009264 0.009489
> 1) 0.003033 34% 0.003027 34% 0.002885 32% 0.002911 32% 0.002850 31% 0.003068 32% 0.002971 32% 0.002890 33% 0.003239 35% 0.002973 32% 0.003068 32%
>
> revset #5: heads(matching(tip, "author"))
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 15.82091 15.47578 15.95506 15.74816 15.72207 15.72779 15.52043 15.65250 15.40250 15.46190 15.34036
> 1) 15.29257 15.39349 15.52757 15.41417 15.58991 15.42382 15.46773 15.48543 15.43644 15.76070 15.32104
>
> revset #6: heads(matching(tip, "author")) and -10000:-1
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 15.74241 15.63808 15.46853 15.77480 15.61004 15.80385 15.44905 15.38059 15.34111 15.45029 15.85194
> 1) 15.51474 15.45938 15.28755 15.77045 15.38245 15.40625 15.53653 15.31534 15.64134 15.43437 15.29366
>
> revset #7: (-10000:-1) and heads(matching(tip, "author"))
> plain min max first last reverse rev..rst rev..ast sort sor..rst sor..ast
> 0) 15.37988 15.59717 16.07863 15.29263 15.46472 15.84978 15.35538 15.50673 15.37396 15.42426 15.44425
> 1) 15.51504 15.38657 15.30847 15.39458 15.60453 15.26237 15.45240 15.34210 15.36410 15.53354 15.67735
>
> diff -r f32e7d90db76 -r 234c10661000 mercurial/revlog.py
> --- a/mercurial/revlog.py Thu Jan 10 18:25:18 2019 +0100
> +++ b/mercurial/revlog.py Wed Jan 16 16:19:26 2019 +0100
> @@ -1108,6 +1108,8 @@
> return self.index.headrevs()
> except AttributeError:
> return self._headrevs()
> + if rustext is not None:
> + return rustext.dagop.headrevs(self.index, revs)
> return dagop.headrevs(revs, self.parentrevs)
>
> def computephases(self, roots):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
--
Georges Racinet
https://octobus.net
GPG: BF5456F4DC625443849B6E58EE20CA44EF691D39, sur serveurs publics
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20190116/c0bccef2/attachment.sig>
More information about the Mercurial-devel
mailing list