mirror of
https://github.com/git/git.git
synced 2026-01-17 14:21:57 +00:00
fetch-pack.c: enable fscache for stats under .git/objects
When I do git fetch, git call file stats under .git/objects for each refs. This takes time when there are many refs. By enabling fscache, git takes file stats by directory traversing and that improved the speed of fetch-pack for repository having large number of refs. In my windows workstation, this improves the time of `git fetch` for chromium repository like below. I took stats 3 times. * With this patch TotalSeconds: 9.9825165 TotalSeconds: 9.1862075 TotalSeconds: 10.1956256 Avg: 9.78811653333333 * Without this patch TotalSeconds: 15.8406702 TotalSeconds: 15.6248053 TotalSeconds: 15.2085938 Avg: 15.5580231 Signed-off-by: Takuto Ikuta <tikuta@chromium.org>
This commit is contained in:
committed by
Johannes Schindelin
parent
2f685326de
commit
0dae53324a
@@ -680,6 +680,7 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
||||
|
||||
save_commit_buffer = 0;
|
||||
|
||||
enable_fscache(1);
|
||||
for (ref = *refs; ref; ref = ref->next) {
|
||||
struct object *o;
|
||||
unsigned int flags = OBJECT_INFO_QUICK;
|
||||
@@ -709,6 +710,7 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
|
||||
cutoff = commit->date;
|
||||
}
|
||||
}
|
||||
enable_fscache(0);
|
||||
|
||||
oidset_clear(&loose_oid_set);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user