mirror of
https://github.com/git-for-windows/git.git
synced 2026-03-31 12:16:11 -05:00
This is retry of #1419. I added flush_fscache macro to flush cached stats after disk writing with tests for regression reported in #1438 and #1442. git checkout checks each file path in sorted order, so cache flushing does not make performance worse unless we have large number of modified files in a directory containing many files. Using chromium repository, I tested `git checkout .` performance when I delete 10 files in different directories. With this patch: TotalSeconds: 4.307272 TotalSeconds: 4.4863595 TotalSeconds: 4.2975562 Avg: 4.36372923333333 Without this patch: TotalSeconds: 20.9705431 TotalSeconds: 22.4867685 TotalSeconds: 18.8968292 Avg: 20.7847136 I confirmed this patch passed all tests in t/ with core_fscache=1. Signed-off-by: Takuto Ikuta <tikuta@chromium.org>
17 lines
383 B
C
17 lines
383 B
C
#ifndef FSCACHE_H
|
|
#define FSCACHE_H
|
|
|
|
int fscache_enable(int enable);
|
|
#define enable_fscache(x) fscache_enable(x)
|
|
|
|
int fscache_enabled(const char *path);
|
|
#define is_fscache_enabled(path) fscache_enabled(path)
|
|
|
|
void fscache_flush(void);
|
|
#define flush_fscache() fscache_flush()
|
|
|
|
DIR *fscache_opendir(const char *dir);
|
|
int fscache_lstat(const char *file_name, struct stat *buf);
|
|
|
|
#endif
|