[PATCH] Speedup bash completion loading
From: Kirill Smelkov <hidden>
Date: 2016-06-15 22:47:28
Subsystem:
the rest · Maintainer:
Linus Torvalds
On my slow laptop (P3 700MHz), system-wide bash completions take too
much time to load (> 1s), and significant fraction of this time is spent
loading git-completion.bash:
$ time bash -c '. git-completion.bash' # before this patch
real 0m0.317s
user 0m0.250s
sys 0m0.060s
I've tracked down that the most time is spent warming up merge_strategy,
all_command & porcelain_command caches.
Since git is not used in each and every interactive xterm, I think it
would be perfectly ok to load completion support with cold caches, and
then load needed thing lazily.
As __git_merge_stratiegies(), __git_all_commands() &
__git_porcelain_command() already cache their results, we can safely
remove associated cache initialization code and be done with it:
$ time bash -c '. git-completion.bash' # after this patch
real 0m0.069s
user 0m0.050s
sys 0m0.020s
Signed-off-by: Kirill Smelkov <redacted>
---
contrib/completion/git-completion.bash | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 2c2a0d4..4c09d41 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash@@ -340,7 +340,6 @@ __git_merge_strategies () }' } __git_merge_strategylist= -__git_merge_strategylist=$(__git_merge_strategies 2>/dev/null) __git_complete_file () {
@@ -505,7 +504,6 @@ __git_all_commands () done } __git_all_commandlist= -__git_all_commandlist="$(__git_all_commands 2>/dev/null)" __git_porcelain_commands () {
@@ -596,7 +594,6 @@ __git_porcelain_commands () done } __git_porcelain_commandlist= -__git_porcelain_commandlist="$(__git_porcelain_commands 2>/dev/null)" __git_aliases () {
--
1.6.5.rc2.17.gdbc1b