On Sat, Jan 27, 2018 at 6:43 PM, Ævar Arnfjörð Bjarmason
<ava...@gmail.com> wrote:
> a) no fsmonitor
>
>     $ time GIT_TRACE_PERFORMANCE=1 ~/g/git/git-status
>     12:32:44.947651 read-cache.c:1890       performance: 0.053153609 s: read 
> cache .git/index
>     12:32:44.967943 preload-index.c:112     performance: 0.020161093 s: 
> preload index
>     12:32:44.974217 read-cache.c:1446       performance: 0.006230611 s: 
> refresh index
>
> ...
>
> b) with fsmonitor
>
>     $ time GIT_TRACE_PERFORMANCE=1 ~/g/git/git-status
>     12:34:23.833625 read-cache.c:1890       performance: 0.049485685 s: read 
> cache .git/index
>     12:34:23.838622 preload-index.c:112     performance: 0.001221197 s: 
> preload index
>     12:34:23.858723 fsmonitor.c:170         performance: 0.020059647 s: 
> fsmonitor process '.git/hooks/fsmonitor-watchman'
>     12:34:23.871532 read-cache.c:1446       performance: 0.032870818 s: 
> refresh index

Hmm.. why does refresh take longer with fsmonitor/watchman? With the
help from watchman, we know what files are modified. We don't need
manual stat()'ing and this line should be lower than the "no
fsmonitor" case, which is 0.006230611s.

>     12:34:23.876427 diff-lib.c:250          performance: 0.004731427 s: 
> diff-files
>     12:34:23.880669 diff-lib.c:527          performance: 0.003944422 s: 
> diff-index
>     12:34:23.899225 dir.c:2290              performance: 0.018509066 s: read 
> directory
>     12:34:23.901914 trace.c:417             performance: 0.118250995 s: git 
> command: '/home/aearnfjord/g/git/git-status'

I don't see any "write index" line here, which is interesting since
your case c) is about "don't write index".

> c) with fsmonitor + don't write index
-- 
Duy

Reply via email to