##// END OF EJS Templates
treemanifest: stop storing full path for each item in manifest._lazydirs...
treemanifest: stop storing full path for each item in manifest._lazydirs This information is obtainable, if needed, based on the lazydirs key (which is the entry name) and the manifest's `dir()` method. ### Performance This is actually both a memory and a performance improvement, but it's likely to be a very small one in most situations. In the pathological repo I've been using for testing other performance work I've done recently, this reduced the time for a rebase operation (rebasing two commits across a public-phase change that touches a sibling of one of my tracked directories where the common parent is massive (>>10k entries)): #### Before ``` Time (mean ± σ): 4.059 s ± 0.121 s [User: 0.9 ms, System: 0.6 ms] Range (min … max): 3.941 s … 4.352 s 10 runs ``` #### After ``` Time (mean ± σ): 3.707 s ± 0.060 s [User: 0.8 ms, System: 0.8 ms] Range (min … max): 3.648 s … 3.818 s 10 runs ``` Differential Revision: https://phab.mercurial-scm.org/D9553
Kyle Lippincott -
r46711:93e09d37 default
Show More
Name Size Modified Last Commit Author
/ mercurial / thirdparty / cbor
cbor2
.travis.yml Loading ...
LICENSE.txt Loading ...
README.rst Loading ...
__init__.py Loading ...
Build Status Code Coverage

This library provides encoding and decoding for the Concise Binary Object Representation (CBOR) (RFC 7049) serialization format.

There exists another Python CBOR implementation (cbor) which is faster on CPython due to its C extensions. On PyPy, cbor2 and cbor are almost identical in performance. The other implementation also lacks documentation and a comprehensive test suite, does not support most standard extension tags and is known to crash (segfault) when passed a cyclic structure (say, a list containing itself).