changeset 51548:1b17eeba9deb

stream-clone: stop getting the file size of all file in v3 The point of v3 is to do less work in the locked section. It was currently not the case. This significantly boost performance. The following number comes from a large private repository using perf::stream-locked-section: base-line: 35.03 seconds this-change: 24.50 seconds (-30%)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 26 Mar 2024 11:24:20 +0000
parents 8e2a68e10f5c
children a452807df09b
files mercurial/streamclone.py
diffstat 1 files changed, 1 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/streamclone.py	Tue Mar 26 18:55:40 2024 +0000
+++ b/mercurial/streamclone.py	Tue Mar 26 11:24:20 2024 +0000
@@ -723,8 +723,8 @@
         # create a copy of volatile files
         for k, vfs, e in entries:
             for f in e.files():
-                f.file_size(vfs)  # record the expected size under lock
                 if f.is_volatile:
+                    f.file_size(vfs)  # record the expected size under lock
                     copy(vfs.join(f.unencoded_path))
         # the first yield release the lock on the repository
         yield None