comparison tests/test-fncache.t @ 41978:a56487081109

store: don't read the whole fncache in memory In large repositories with lot of files, the fncache grows more than 100 MB and reading that whole thing into memory slows things down. Let's not read the whole thing into memory. This patch changes fncache loading code to read 1 MB at once. Loading 1 MB at once saves ~1 sec on perffncacheload for our internal repository. I tried various values such as 0.5 MB, 5 MB, 10 MB but best results were produced using 1 MB as the chunksize. On a narrow clone with fncache around 40 MB, this patch saves ~0.04 seconds on average on perffncacheload. To test the code, I have coded an extension in test-fncache.t which set chunksize to 1 byte, and the test passes with that. Differential Revision: https://phab.mercurial-scm.org/D5296
author Pulkit Goyal <pulkit@yandex-team.ru>
date Thu, 22 Nov 2018 15:14:24 +0300
parents e4ac7e63c213
children 6b71334f2540
comparison
equal deleted inserted replaced
41976:51685c6dcca3 41978:a56487081109
1 #require repofncache 1 #require repofncache
2
3 An extension which will set fncache chunksize to 1 byte to make sure that logic
4 does not break
5
6 $ cat > chunksize.py <<EOF
7 > from __future__ import absolute_import
8 > from mercurial import store
9 > store.fncache_chunksize = 1
10 > EOF
11
12 $ cat >> $HGRCPATH <<EOF
13 > [extensions]
14 > chunksize = $TESTTMP/chunksize.py
15 > EOF
2 16
3 Init repo1: 17 Init repo1:
4 18
5 $ hg init repo1 19 $ hg init repo1
6 $ cd repo1 20 $ cd repo1