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>
Felipe Contreras committed
Apr 10, 2013 at 01:57 UTC
b4cfbc969cd910992a08b12dc612d19323668e09
1 file changed
+11
-15
contrib/completion/git-completion.bash
+11
-15
@@ -53,19 +53,6 @@ __gitdir ()
53
fi
54
}
55
56
-__gitcomp_1 ()
57
-{
58
- local c IFS=$' \t\n'
59
- for c in $1; do
60
- c="$c$2"
61
- case $c in
62
- --*=*|*.) ;;
63
- *) c="$c " ;;
64
- esac
65
- printf '%s\n' "$c"
66
- done
67
-}
68
-
56
# The following function is based on code from:
57
#
58
# bash_completion - programmable completion functions for bash 3.2+
@@ -220,8 +207,17 @@ __gitcomp ()
207
--*=)
208
;;
209
*)
223
- local IFS=$'\n'
224
- __gitcompadd "$(__gitcomp_1 "${1-}" "${4-}")" "${2-}" "$cur_" ""
210
+ local c i=0 IFS=$' \t\n'
211
+ for c in $1; do
212
+ c="$c${4-}"
213
+ case $c in
214
+ --*=*|*.) ;;
215
+ *) c="$c " ;;
216
+ esac
217
+ if [[ $c == "$cur_"* ]]; then
218
+ COMPREPLY[i++]="${2-}$c"
219
+ fi
220
+ done
221
;;
222
esac
223
}