49 lines
1.0 KiB
Bash
Executable File
49 lines
1.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='diff-hunks store performance'
|
|
. ./perf-lib.sh
|
|
|
|
test_perf_default_repo
|
|
|
|
# Pick a file to blame pseudo-randomly. The sort key is the blob
|
|
# hash, so it is stable.
|
|
test_expect_success 'select a file' '
|
|
git ls-tree -r HEAD | grep ^100644 |
|
|
sort -k 3 | head -n 1 | cut -f 2 >filelist
|
|
'
|
|
|
|
file=$(cat filelist)
|
|
export file
|
|
|
|
# Warm the store the way an owner would: a stat walk with writing on.
|
|
test_perf 'warm the store' '
|
|
git diff-hunks clear &&
|
|
GIT_DIFF_HUNKS_WRITE=1 git log --all --stat >/dev/null
|
|
'
|
|
|
|
test_expect_success 'ensure the store is warm for the timed reads' '
|
|
GIT_DIFF_HUNKS_WRITE=1 git log --all --stat >/dev/null
|
|
'
|
|
|
|
test_perf 'log --stat -1000 (store)' '
|
|
git log --stat -1000 >/dev/null
|
|
'
|
|
|
|
test_perf 'log --stat -1000 (no store)' '
|
|
git -c core.diffhunks=false log --stat -1000 >/dev/null
|
|
'
|
|
|
|
test_perf 'blame $file (store)' '
|
|
git blame "$file" >/dev/null
|
|
'
|
|
|
|
test_perf 'blame $file (no store)' '
|
|
git -c core.diffhunks=false blame "$file" >/dev/null
|
|
'
|
|
|
|
test_expect_success 'clean up store' '
|
|
git diff-hunks clear
|
|
'
|
|
|
|
test_done
|