Skip to content
  • Pierre-Yves David's avatar
    phases: keep internal state as rev-num instead of node-id · f8bf1a8e9181
    Pierre-Yves David authored
    Node-id are expensive to work with, dealing with revision is much simple and
    faster.
    
    The fact we still used node-id here shows how few effort have been put into
    making the phase logic fast. We tend to no longer use node-id internally for
    about ten years.
    
    This has a large impact of repository with many draft roots. For example this
    Mozilla-try copy have ½ Million draft roots and `perf::unbundle` see a
    significant improvement.
    
    ### data-env-vars.name            = mozilla-try-2023-03-22-zstd-sparse-revlog
      # benchmark.name                = hg.perf.perf-unbundle
      # bin-env-vars.hg.flavor        = no-rust
      # bin-env-vars.hg.py-re2-module = default
      # benchmark.variants.issue6528  = disabled
    
      # benchmark.variants.revs = last-1
    before:: 1.746791 seconds
    after::  1.278379 seconds  (-26.82%)
    
      # benchmark.variants.revs = last-10
    before:: 3.145774 seconds
    after::  2.103735 seconds  (-33.13%)
    
      # benchmark.variants.revs = last-100
    before:: 3.487635 seconds
    after::  2.446749 seconds  (-29.85%)
    
      # benchmark.variants.revs = last-1000
    before:: 5.007568 seconds
    after::  3.989923 seconds  (-20.32%)
    f8bf1a8e9181