Current state of revset performance.

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Oct 31 10:50:37 CDT 2014


Here is a small benchmark for revset. I hacked the benchmark script a 
bit to be able to:

- display comparison with the first run (if > 5%)
- run some variant (eg: all(), first(all), last(all)).

I first ran with more variant but this raised the benchmark time to 
unacceptable length.

This run is on a mercurial-devel repository with multiple heads but no 
hidden changesets. I've another one currently running on the Mozilla 
repository.

(yeah, It is a bit late for such report but I got delayed)

Revision:
0) 2.9.2
1) 3.0.2
2) 3.1.2
3) @ (6df4bc39f682)


revset #0: all()
      plain           first           last
0)   0.000661        0.000934        0.000917
1)   0.000865   130% 0.000067     7% 0.000068     7%
2)   0.000864   130% 0.000072     7% 0.000072     7%
3)   0.000251    37% 0.000057     6% 0.000057     6%

revset #1: draft()
      plain           first           last
0)   0.008182        0.009183        0.009022
1)   0.010656   130% 0.010673   116% 0.000073     0%
2)   0.010892   133% 0.011134   121% 0.000078     0%
3)   0.008268        0.008257    89% 0.000063     0%

revset #2: ::tip
      plain           first           last
0)   0.027052        0.027483        0.027422
1)   0.063356   234% 0.056368   205% 0.000123     0%
2)   0.064666   239% 0.057509   209% 0.000128     0%
3)   0.051750   191% 0.050233   182% 0.000116     0%

revset #3: draft() and ::tip
      plain           first           last
0)   0.033723        0.034419        0.035435
1)   0.011008    32% 0.011033    32% 0.000152     0%
2)   0.011609    34% 0.011579    33% 0.000159     0%
3)   0.008667    25% 0.008623    25% 0.000139     0%

revset #4: ::tip and draft()
      plain           first           last
0)   0.033714        0.034818        0.035098
1)   0.011177    33% 0.011152    32% 0.000152     0%
2)   0.012386    36% 0.011562    33% 0.000160     0%
3)   0.008591    25% 0.008759    25% 0.000138     0%

revset #5: 0::tip
      plain           first           last
0)   0.034990        0.036429        0.036742
1)   0.039193   112% 0.032117    88% 0.031593    85%
2)   0.041740   119% 0.033422    91% 0.032080    87%
3)   0.037924   108% 0.032164    88% 0.032230    87%

revset #6: roots(0::tip)
      plain           first           last
0)   0.053484        0.057963        0.057493
1)   0.073101   136% 0.074129   127% 0.072838   126%
2)   0.073549   137% 0.072265   124% 0.071966   125%
3)   0.112967   211% 0.106681   184% 0.109084   189%

revset #7: author(lmoscovicz)
      plain           first           last
0)   1.197628        1.192863        1.189469
1)   1.226583        1.060301    88% 0.125063    10%
2)   1.216401        1.083490    90% 0.127733    10%
3)   1.191183        1.032492    86% 0.122460    10%

revset #8: author(mpm)
      plain           first           last
0)   1.192604        1.190421        1.194465
1)   1.234665        0.000108     0% 0.002370     0%
2)   1.307694   109% 0.000116     0% 0.002382     0%
3)   1.197737        0.000098     0% 0.002310     0%

revset #9: author(lmoscovicz) or author(mpm)
      plain           first           last
0)   2.450612        2.396245        2.409053
1)   3.295173   134% 1.058555    44% 3.245159   134%
2)   3.385882   138% 1.090317    45% 3.303913   137%
3)   2.484001        1.030028    42% 2.430547

revset #10: author(mpm) or author(lmoscovicz)
      plain           first           last
0)   2.175475        2.147277        2.190208
1)   3.145430   144% 1.610150    74% 3.430908   156%
2)   3.169045   145% 1.637919    76% 3.169588   144%
3)   2.206914        0.000124     0% 2.191002

revset #11: tip:0
      plain           first           last
0)   0.002548        0.004061        0.004077
1)   0.009699   380% 0.000295     7% 0.000297     7%
2)   0.009761   383% 0.000300     7% 0.000300     7%
3)   0.005802   227% 0.000291     7% 0.000292     7%

revset #12: 0::
      plain           first           last
0)   0.026132        0.026657        0.027105
1)   0.066038   252% 0.000134     0% 0.062019   228%
2)   0.066137   253% 0.000137     0% 0.061716   227%
3)   0.032168   123% 0.000126     0% 0.040938   151%

revset #13: roots((tip~100::) - (tip~100::tip))
      plain           first           last
0)   0.005550        0.006591        0.006499
1)   0.016690   300% 0.016819   255% 0.016649   256%
2)   0.014842   267% 0.014871   225% 0.015104   232%
3)   0.005650        0.005762    87% 0.005715    87%

revset #14: roots((0::) - (0::tip))
      plain           first           last
0)   0.064984        0.066560        0.068803
1)   2.227735  3428% 2.100057  3155% 2.157272  3135%
2)   0.136552   210% 0.135501   203% 0.135593   197%
3)   0.133073   204% 0.131260   197% 0.131720   191%

revset #15: ::p1(p1(tip))::
      plain           first           last
0)   0.058441        0.059322        0.059688
1)   0.167296   286% 0.072087   121% 0.163829   274%
2)   0.174026   297% 0.072762   122% 0.166785   279%
3)   0.097599   167% 0.051359    86% 0.093226   156%

revset #16: public()
      plain           first           last
0)   0.009428        0.009911        0.009833
1)   0.012182   129% 0.000073     0% 0.000091     0%
2)   0.012285   130% 0.000078     0% 0.000096     0%
3)   0.009079        0.000063     0% 0.000076     0%

revset #17: :10000 and public()
      plain           first           last
0)   0.005351        0.007019        0.007057
1)   0.009301   173% 0.000325     4% 0.000325     4%
2)   0.009295   173% 0.000330     4% 0.000333     4%
3)   0.007349   137% 0.000310     4% 0.000311     4%

revset #18: draft()
      plain           first           last
0)   0.008277        0.009122        0.008984
1)   0.010608   128% 0.010671   116% 0.000073     0%
2)   0.010495   126% 0.010583   116% 0.000077     0%
3)   0.008028        0.007948    87% 0.000062     0%

revset #19: :10000 and draft()
      plain           first           last
0)   0.004885        0.006806        0.006736
1)   0.008990   184% 0.009080   133% 0.008988   133%
2)   0.008925   182% 0.008922   131% 0.008906   132%
3)   0.006438   131% 0.006477        0.006495

revset #20: roots((0:tip)::)
      plain           first           last
0)   0.054598        0.055194        0.055574
1)   0.150721   276% 0.151623   274% 0.153083   275%
2)   0.148328   271% 0.146107   264% 0.146968   264%
3)   0.158484   290% 0.156384   283% 0.157981   284%

revset #21: (not public() - obsolete())
      plain           first           last
0)   0.010060        0.012286        0.011946
1)   0.033279   330% 0.034237   278% 0.000116     0%
2)   0.031183   309% 0.030521   248% 0.000122     1%
3)   0.023331   231% 0.023132   188% 0.000098     0%

revset #22: parents(20000)
      plain           first           last
0)   0.001072        0.001895        0.001894
1)   0.001455   135% 0.001282    67% 0.000308    16%
2)   0.001434   133% 0.001281    67% 0.000310    16%
3)   0.000093     8% 0.000116     6% 0.000117     6%

revset #23: (20000::) - (20000)
      plain           first           last
0)   0.005060        0.006131        0.006144
1)   0.013211   261% 0.005674    92% 0.013004   211%
2)   0.012788   252% 0.005525    90% 0.012252   199%
3)   0.023453   463% 0.022214   362% 0.007272   118%

revset #24: (children(ancestor(tip~5, tip)) and ::(tip~5))::
      plain           first           last
0)   0.031496        0.031880        0.031696
1)   0.079510   252% 0.080726   253% 0.081683   257%
2)   0.074485   236% 0.074235   232% 0.074772   235%
3)   0.051772   164% 0.051106   160% 0.053094   167%



-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list