зеркало из https://github.com/microsoft/git.git
completion: inline __gitcomp_1 to its sole callsite
There is no point in calling a separate function that is only used in one place. Especially considering that there's no need to call compgen, and we traverse the words ourselves both in __gitcompadd, and __gitcomp_1. Let's squash the functions together, and traverse only once. This improves performance. For N number of words: == 1 == original: 0.002s new: 0.000s == 10 == original: 0.005s new: 0.001s == 100 == original: 0.009s new: 0.006s == 1000 == original: 0.027s new: 0.019s == 10000 == original: 0.163s new: 0.151s == 100000 == original: 1.555s new: 1.497s No functional changes. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
7d13e0a3af
Коммит
b4cfbc969c
|
@ -53,19 +53,6 @@ __gitdir ()
|
|||
fi
|
||||
}
|
||||
|
||||
__gitcomp_1 ()
|
||||
{
|
||||
local c IFS=$' \t\n'
|
||||
for c in $1; do
|
||||
c="$c$2"
|
||||
case $c in
|
||||
--*=*|*.) ;;
|
||||
*) c="$c " ;;
|
||||
esac
|
||||
printf '%s\n' "$c"
|
||||
done
|
||||
}
|
||||
|
||||
# The following function is based on code from:
|
||||
#
|
||||
# bash_completion - programmable completion functions for bash 3.2+
|
||||
|
@ -220,8 +207,17 @@ __gitcomp ()
|
|||
--*=)
|
||||
;;
|
||||
*)
|
||||
local IFS=$'\n'
|
||||
__gitcompadd "$(__gitcomp_1 "${1-}" "${4-}")" "${2-}" "$cur_" ""
|
||||
local c i=0 IFS=$' \t\n'
|
||||
for c in $1; do
|
||||
c="$c${4-}"
|
||||
case $c in
|
||||
--*=*|*.) ;;
|
||||
*) c="$c " ;;
|
||||
esac
|
||||
if [[ $c == "$cur_"* ]]; then
|
||||
COMPREPLY[i++]="${2-}$c"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче