Skip to content
Snippets Groups Projects
  1. Mar 27, 2024
  2. Mar 26, 2024
  3. Mar 29, 2024
  4. Mar 28, 2024
  5. Mar 25, 2024
  6. Mar 07, 2024
    • Pierre-Yves David's avatar
      branchcache: allow to detect "pure topological case" for branchmap · 4a8bb136
      Pierre-Yves David authored
      We don't rum this detection every time we run the branchcache, that would be
      costly. However we now do it when running `hg debugupdatecache`.
      
      This will help existing repository to benefit from the fastpath when possible.
      4a8bb136
    • Pierre-Yves David's avatar
      branchcache: add a "pure topological head" fast path · 718f28ea
      Pierre-Yves David authored
      In a narrow but actually quick common case, all topological heads are all on
      the same branch and all open. In this case, computing the branch map is very
      simple. We can quickly detect situation where this situation will not change.
      
      So we update the V3 format to be able to express this situation and upgrade the
      update code to detect we remains in that mode.
      
      The branch cache is populated with the actual value when the branch map is
      accessed, but the update_disk method can do the update without needing to
      populate it.
      718f28ea
  7. Mar 06, 2024
  8. Mar 07, 2024
    • Pierre-Yves David's avatar
      branchcache: skip entries that are topological heads in the on disk file · f85f23f1
      Pierre-Yves David authored
      In the majority of cases, topological heads are also branch heads. We have
      efficient way to get the topological heads and efficient way to retrieve
      their branch information. So there is little value in putting them in the branch
      cache file explicitly. On the contrary, writing them explicitly tend to create
      very large cache file that are inefficient to read and update.
      
      So the branch cache v3 format is no longer including them. This changeset focus
      on the format aspect and have no focus on the performance aspect. We will cover
      that later.
      f85f23f1
    • Pierre-Yves David's avatar
      branchcache: simplify the branch rev cache test · fc710c99
      Pierre-Yves David authored
      We don't need that many content dump and this gets in the way in change in
      access pattern (e.g. accessing revision in a different order change the order of
      branches in the "names" file).
      
      So we simplify this test in advance.
      fc710c99
  9. Mar 06, 2024
  10. Mar 05, 2024
  11. Feb 25, 2024
  12. Feb 28, 2024
  13. Feb 26, 2024
  14. Feb 27, 2024
  15. Mar 25, 2024
    • Pierre-Yves David's avatar
      phases: update the phase set as we go during retract boundary · 4ee50d98
      Pierre-Yves David authored
      Apparently iterating over the `changed_revs` dictionary is very expensive.
      
      On mozilla-try-2019-02-18, a perf::unbundle call with a 10 000 changesets
      bundle gives give use the following timing.
      
      e57d4b868a3e:     4.6 seconds
      ac1c75188440:   102.5 seconds
      prev-changeset:  30.0 seconds
      this-changeset:   4.6 seconds
      
      So, the performance regression is gone.
      
      Once again: thanks to marvelous Python!
      4ee50d98
    • Pierre-Yves David's avatar
      phases: avoid a potentially costly dictionary interation in some case · e0f92bd9
      Pierre-Yves David authored
      If we retract for the draft phase, there is not non-public item to be retracted
      and we can skip this part. This part is was apparently super costly thanks to
      Python.
      
      On mozilla-try-2019-02-18, a perf::unbundle call with a 10 000 changesets
      bundle gives give use the following timing.
      
      e57d4b868a3e:     4.6 seconds
      ac1c75188440:   102.5 seconds
      this-changeset:  30.0 seconds
      
      So we recovered about ⅔ of the regression, the next changeset will give us the
      rest back.
      e0f92bd9
  16. Mar 21, 2024
Loading