##// END OF EJS Templates
branchmap-v3: filter topo heads using node for performance reason...
branchmap-v3: filter topo heads using node for performance reason The branchmap currently contains heads as nodeid. If we build a set of revnum with the topological heads, we need to turn the nodeid in the branchmap to revnum to be able to check if they are topo-heads. That nodeid → revnum lookup is "expensive" and adds up to something noticeable if you do it hundreds of thousand of time. Instead we turn all the topo-heads revnums into nodes and build a set. So we can directly test membership of the nodeids stored in the branchmap. That is much faster. Ideally we would have revnum in the branchmap and could directly test revnum against a revnum set and that would be even faster. However that's an adventure for another time. Without this change, the branchmap format "v3" was significantly slower than the "v2" format. With this changes, some of that gap is recovered With rust + persistent nodemap, this overhead was smaller because the extra lookup did not had to to build the nodemap from scratch. In addition the mozilla-unified repository is able to use the "pure_top" mode of branchmap v3, so it was not really affected by this. Future changeset will work of the remaining of the performance gap. ### benchmark.name = hg.command.unbundle # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = disabled # benchmark.variants.resource-usage = default # benchmark.variants.reuse-external-delta-parent = yes # benchmark.variants.revs = any-1-extra-rev # benchmark.variants.source = unbundle # benchmark.variants.validate = default # benchmark.variants.verbosity = quiet ## data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 0.233711 ~~~~~ branch-v3 before: 0.380994 (+63.02%, +0.15) branch-v3 after: 0.368769 (+57.79%, +0.14) # bin-env-vars.hg.flavor = rust branch-v2: 0.235230 ~~~~~ branch-v3 before: 0.385060 (+63.70%, +0.15) branch-v3 after: 0.372460 (+58.34%, +0.14) ## data-env-vars.name = netbeans-2018-08-01-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 0.255586 ~~~~~ branch-v3 before: 0.317524 (+24.23%, +0.06) branch-v3 after: 0.318907 (+24.78%, +0.06) ## data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 0.339010 ~~~~~ branch-v3 before: 0.410007 (+20.94%, +0.07) branch-v3 after: 0.349752 (+3.17%, +0.01) # bin-env-vars.hg.flavor = rust branch-v2: 0.346525 ~~~~~ branch-v3 before: 0.410428 (+18.44%, +0.06) branch-v3 after: 0.354300 (+2.24%, +0.01) ## data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 0.380202 ~~~~~ branch-v3 before: 0.393871 (+3.60%, +0.01) branch-v3 after: 0.396293 (+4.23%, +0.02) ## data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 0.412165 ~~~~~ branch-v3 before: 0.438105 (+6.29%, +0.03) branch-v3 after: 0.424769 (+3.06%, +0.01) # bin-env-vars.hg.flavor = rust branch-v2: 0.412397 ~~~~~ branch-v3 before: 0.438405 (+6.31%, +0.03) branch-v3 after: 0.421796 (+2.28%, +0.01) ## data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 0.429501 ~~~~~ branch-v3 before: 0.452692 (+5.40%, +0.02) branch-v3 after: 0.443849 (+3.34%, +0.01) ## data-env-vars.name = mozilla-try-2024-03-26-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 3.403171 ~~~~~ branch-v3 before: 6.562345 (+92.83%, +3.16) branch-v3 after: 6.234055 (+83.18%, +2.83) # bin-env-vars.hg.flavor = rust branch-v2: 3.454876 ~~~~~ branch-v3 before: 6.160248 (+78.31%, +2.71) branch-v3 after: 6.307813 (+82.58%, +2.85) ## data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 3.465435 ~~~~~ branch-v3 before: 5.381648 (+55.30%, +1.92) branch-v3 after: 5.176076 (+49.36%, +1.71)

File last commit:

r50538:e1c586b9 default
r52869:41b8892a default
Show More
__init__.py
79 lines | 1.6 KiB | text/x-python | PythonLexer
Matt Harbison
attr: vendor 22.1.0...
r50538 # SPDX-License-Identifier: MIT
import sys
from functools import partial
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
Matt Harbison
attr: vendor 22.1.0...
r50538 from . import converters, exceptions, filters, setters, validators
from ._cmp import cmp_using
from ._config import get_run_validators, set_run_validators
from ._funcs import asdict, assoc, astuple, evolve, has, resolve_types
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 from ._make import (
Matt Harbison
attr: vendor 22.1.0...
r50538 NOTHING,
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 Attribute,
Factory,
Matt Harbison
attr: vendor 22.1.0...
r50538 attrib,
attrs,
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 fields,
Matt Harbison
attr: vendor 22.1.0...
r50538 fields_dict,
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 make_class,
validate,
)
Matt Harbison
attr: vendor 22.1.0...
r50538 from ._version_info import VersionInfo
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
Matt Harbison
attr: vendor 22.1.0...
r50538 __version__ = "22.1.0"
__version_info__ = VersionInfo._from_version_string(__version__)
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
__title__ = "attrs"
__description__ = "Classes Without Boilerplate"
Matt Harbison
attr: vendor 22.1.0...
r50538 __url__ = "https://www.attrs.org/"
__uri__ = __url__
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 __doc__ = __description__ + " <" + __uri__ + ">"
__author__ = "Hynek Schlawack"
__email__ = "hs@ox.cx"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2015 Hynek Schlawack"
Matt Harbison
attr: vendor 22.1.0...
r50538 s = attributes = attrs
ib = attr = attrib
dataclass = partial(attrs, auto_attribs=True) # happy Easter ;)
Siddharth Agarwal
thirdparty: vendor attrs...
r34398
__all__ = [
"Attribute",
"Factory",
"NOTHING",
"asdict",
"assoc",
"astuple",
"attr",
"attrib",
"attributes",
"attrs",
Matt Harbison
attr: vendor 22.1.0...
r50538 "cmp_using",
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 "converters",
"evolve",
"exceptions",
"fields",
Matt Harbison
attr: vendor 22.1.0...
r50538 "fields_dict",
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 "filters",
"get_run_validators",
"has",
"ib",
"make_class",
Matt Harbison
attr: vendor 22.1.0...
r50538 "resolve_types",
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 "s",
"set_run_validators",
Matt Harbison
attr: vendor 22.1.0...
r50538 "setters",
Siddharth Agarwal
thirdparty: vendor attrs...
r34398 "validate",
"validators",
]
Matt Harbison
attr: vendor 22.1.0...
r50538
if sys.version_info[:2] >= (3, 6):
from ._next_gen import define, field, frozen, mutable # noqa: F401
__all__.extend(("define", "field", "frozen", "mutable"))