revlog: add the glue to use the Rust `InnerRevlog` from Python
The performance of this has been looked at for quite some time, and some workflows are actually quite a bit faster than with the Python + C code. However, we are still (up to 20%) slower in some crucial places like cloning certain repos, log, cat, which makes this an incomplete rewrite. This is mostly due to the high amount of overhead in Python <-> Rust FFI, especially around the VFS code. A future patch series will rewrite the VFS code in pure Rust, which should hopefully get us up to par with current perfomance, if not better in all important cases. This is a "save state" of sorts, as this is a ton of code, and I don't want to pile up even more things in a single review. Continuing to try to match the current performance will take an extremely long time, if it's not impossible, without the aforementioned VFS work.
parent
13815c9decd4
No related branches found
No related tags found
Showing
- contrib/perf.py 9 additions, 0 deletionscontrib/perf.py
- mercurial/pure/parsers.py 3 additions, 0 deletionsmercurial/pure/parsers.py
- mercurial/revlog.py 177 additions, 61 deletionsmercurial/revlog.py
- mercurial/revlogutils/rewrite.py 6 additions, 4 deletionsmercurial/revlogutils/rewrite.py
- mercurial/statichttprepo.py 3 additions, 0 deletionsmercurial/statichttprepo.py
- mercurial/vfs.py 4 additions, 0 deletionsmercurial/vfs.py
- rust/Cargo.lock 2 additions, 0 deletionsrust/Cargo.lock
- rust/hg-cpython/Cargo.toml 2 additions, 0 deletionsrust/hg-cpython/Cargo.toml
- rust/hg-cpython/src/lib.rs 1 addition, 0 deletionsrust/hg-cpython/src/lib.rs
- rust/hg-cpython/src/pybytes_deref.rs 68 additions, 1 deletionrust/hg-cpython/src/pybytes_deref.rs
- rust/hg-cpython/src/revlog.rs 1405 additions, 465 deletionsrust/hg-cpython/src/revlog.rs
- rust/hg-cpython/src/vfs.rs 289 additions, 0 deletionsrust/hg-cpython/src/vfs.rs
- tests/test-bundle.t 1 addition, 1 deletiontests/test-bundle.t
- tests/test-contrib-perf.t 7 additions, 0 deletionstests/test-contrib-perf.t
- tests/test-journal-exists.t 9 additions, 0 deletionstests/test-journal-exists.t
- tests/test-permissions.t 6 additions, 0 deletionstests/test-permissions.t
- tests/test-remotefilelog-bgprefetch.t 2 additions, 2 deletionstests/test-remotefilelog-bgprefetch.t
- tests/test-remotefilelog-prefetch.t 4 additions, 4 deletionstests/test-remotefilelog-prefetch.t
- tests/test-repo-compengines.t 4 additions, 2 deletionstests/test-repo-compengines.t
- tests/test-rust-revlog.py 0 additions, 90 deletionstests/test-rust-revlog.py
Loading
-
mentioned in commit 68fa50054432
-
mentioned in commit 674e1e7be85a
-
mentioned in commit 702ab407fb43
-
mentioned in commit 8056b60ff3cc
-
mentioned in commit fb38db3b7d6e
-
mentioned in commit 5d42d7b87995
-
mentioned in commit c5b8d373b74a
-
mentioned in commit f1d551dcb0db
-
mentioned in commit c3c10a3864bf
-
mentioned in commit 07740bd86fd9
Please register or sign in to comment