perf: add test for writing the index

A performance test for writing the index to be able to
determine if changes to allocating ondisk structure help.

Signed-off-by: Kevin Willford <kewillf@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Kevin Willford 2017-08-21 15:24:30 -06:00 коммит произвёл Junio C Hamano
Родитель b3622a4ee9
Коммит 3921a0b3c3
3 изменённых файлов: 53 добавлений и 0 удалений

Просмотреть файл

@ -655,6 +655,7 @@ TEST_PROGRAMS_NEED_X += test-parse-options
TEST_PROGRAMS_NEED_X += test-path-utils
TEST_PROGRAMS_NEED_X += test-prio-queue
TEST_PROGRAMS_NEED_X += test-read-cache
TEST_PROGRAMS_NEED_X += test-write-cache
TEST_PROGRAMS_NEED_X += test-ref-store
TEST_PROGRAMS_NEED_X += test-regex
TEST_PROGRAMS_NEED_X += test-revision-walking

Просмотреть файл

@ -0,0 +1,23 @@
#include "cache.h"
#include "lockfile.h"
static struct lock_file index_lock;
int cmd_main(int argc, const char **argv)
{
int i, cnt = 1, lockfd;
if (argc == 2)
cnt = strtol(argv[1], NULL, 0);
setup_git_directory();
read_cache();
for (i = 0; i < cnt; i++) {
lockfd = hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR);
if (0 <= lockfd) {
write_locked_index(&the_index, &index_lock, COMMIT_LOCK);
} else {
rollback_lock_file(&index_lock);
}
}
return 0;
}

29
t/perf/p0007-write-cache.sh Executable file
Просмотреть файл

@ -0,0 +1,29 @@
#!/bin/sh
test_description="Tests performance of writing the index"
. ./perf-lib.sh
test_perf_default_repo
test_expect_success "setup repo" '
if git rev-parse --verify refs/heads/p0006-ballast^{commit}
then
echo Assuming synthetic repo from many-files.sh
git config --local core.sparsecheckout 1
cat >.git/info/sparse-checkout <<-EOF
/*
!ballast/*
EOF
else
echo Assuming non-synthetic repo...
fi &&
nr_files=$(git ls-files | wc -l)
'
count=3
test_perf "write_locked_index $count times ($nr_files files)" "
test-write-cache $count
"
test_done