Having bash-completion installed significantly slows down starting a new Cygwin Bash login shell. It's a problem I've noticed, and I've seen other users report it on this list and elsewhere, too. I've done a bit of digging into what the problem is, and what can be done about it-suggestions are at the bottom of this email.
The slow-down from using bash-completion is due to loading the contents of the /etc/bash_completion.d/ directory. By adding `time` statements at various ponits in /etc/bash_completion, I can see it's adding a fairly consistent 6-6.5 seconds to the shell startup time for me, which more-or-less matches my subjective experience (starting Bash without bash-completion installed is near-instant). Drilling down, there are 187 different scripts in my /etc/bash_completion.d (which, until today, should have been untouched by anything other than Cygwin setup.exe). Average load times for me vary from less than a millisecond to over 600 milliseconds. I've attached my analysis as a CSV; times are as reported by Bash's `time` builtin for the time for /etc/bash_completion to dot in that script. A lot of the scripts are for things I don't have installed. The top four scripts in terms of time taken (mailman, shadow, dsniff, e2fsprogs) do nothing on my system, but between them alone add 1.5 seconds to the average Bash load time. The top 4 seconds includes only two scripts I'm interested in (git and gdb). On my PC, I've renamed the majority of the scripts in /etc/bash_completion.d to have a .bak extension, which prevents bash-completion from loading them. I've kept 37 hand-selected scripts which I either do use or could forsee me using. I'm now seeing Bash take less than a second to load, with picking up all the scripts taking about 0.3 seconds. To avoid others suffering in the same way, I can think of a few different options, none of which are ideal: - Add something to the Cygwin FAQ detailing a solution similar to the above. Requires users to actively look for a solution, but requires minimal effort. If people think this would be useful, I'm happy to draft something up. - Customize Cygwin's bash-completion package, removing scripts for functions that don't exist in Cygwin. This is obviously additional work for the package maintainer (although I'd be glad to help). This won't help for packages that could be installed but aren't, however, but it's at least a step. - Split out the bash-completion script into separate packages that users can install as needed. I suspect this is far more effort than it's worth, however, both for users and maintainers. - Something else yet to be suggested. Regards, Adam -- Adam Dinwoodie Messages posted to this list are made in a personal capacity.
times.csv
Description: times.csv
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple