Skip to content
Snippets Groups Projects
Commit 363914ba328d authored by Pierre-Yves David's avatar Pierre-Yves David :octopus:
Browse files

stream-clone-v2: no longer use the stdlib Condition object

The `threading.Condition` object from the stdlib suffer for excessive
creation/destruction of the underlying locks. This destroy its performance to a
quite noticeable point.

Recreating the same logic with persistent lock yield an absurd performance gain
(or recovery from the slow down).

Note that this problem also affect the stdlib `queue.Queue` object. This will be dealt
with in the next changesets.


### benchmark.name                         = hg.perf.exchange.stream.consume
  # bin-env-vars.hg.flavor                 = default
  # bin-env-vars.hg.py-re2-module          = default
  # benchmark.variants.memory-target       = default
  # benchmark.variants.num-writer          = default
  # benchmark.variants.parallel-processing = yes
  # benchmark.variants.progress            = no
  # benchmark.variants.read-from-memory    = yes
  # benchmark.variants.version             = v2
 ## data-env-vars.name                     = mercurial-public-2024-03-22-zstd-sparse-revlog
no-thread:    0.249693  ~~~~~
threaded:     0.292601  (+17.18%, +0.04)
mem-target:   0.305973  (+22.54%, +0.06)
this-change:  0.305442  (+22.33%, +0.06)
 ## data-env-vars.name                     = heptapod-public-2024-03-25-zstd-sparse-revlog
no-thread:    7.244015  ~~~~~
threaded:     9.387256  (+29.59%, +2.14)
mem-target:   9.901032  (+36.68%, +2.66)
this-change:  9.728038  (+34.29%, +2.48)
 ## data-env-vars.name                     = netbeans-2019-11-07-zstd-sparse-revlog
no-thread:    13.136674  ~~~~~
threaded:     17.008865  (+29.48%, +3.87)
mem-target:   18.467590  (+40.58%, +5.33)
this-change:  17.788205  (+35.41%, +4.65)
 ## data-env-vars.name                     = netbsd-xsrc-all-2024-09-19-zstd-sparse-revlog
no-thread:    5.317709  ~~~~~
threaded:     7.107141  (+33.65%, +1.79)
mem-target:   7.338505  (+38.00%, +2.02)
this-change:  7.122798  (+33.94%, +1.81)
 ## data-env-vars.name                     = netbsd-xsrc-draft-2024-09-19-zstd-sparse-revlog
no-thread:    5.398368  ~~~~~
threaded:     7.163505  (+32.70%, +1.77)
mem-target:   7.333354  (+35.84%, +1.93)
this-change:  7.123533  (+31.96%, +1.73)
 ## data-env-vars.name                     = pypy-2024-03-22-zstd-sparse-revlog
no-thread:    3.acbb55  ~~~~~
threaded:     3.907693  (+27.34%, +0.84)
mem-target:   4.238172  (+38.11%, +1.17)
this-change:  4.095587  (+33.47%, +1.03)
 ## data-env-vars.name                     = mozilla-central-2024-03-22-zstd-sparse-revlog
no-thread:    51.934795  ~~~~~
threaded:     66.902619 (+28.82%, +14.97)
mem-target:   78.194540 (+50.56%, +26.26)
this-change:  72.574373 (+39.74%, +20.64)
 ## data-env-vars.name                     = mozilla-unified-2024-03-22-zstd-sparse-revlog
no-thread:    52.253858  ~~~~~
threaded:     66.397609 (+27.07%, +14.14)
mem-target:   77.492938 (+48.30%, +25.24)
this-change:  72.845963 (+39.41%, +20.59)
 ## data-env-vars.name                     = mozilla-try-2024-03-26-zstd-sparse-revlog
  # benchmark.variants.read-from-memory    = no
no-thread:    130.584329  ~~~~~
threaded:     145.137477 (+11.14%, +14.55)
mem-target:   164.366925 (+25.87%, +33.78)
this-change:  154.873570 (+18.60%, +24.29)
parent aee193b1c784
No related branches found
No related tags found
2 merge requests!1292Draft: 7.0rc preparation,!1234stream-clone-v2: speed up the threaded code (and sequential code too)
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment