我在Windows 7上使用git bash非常慢。用户配置文件位于网络驱动器上,因此我将启动更改为c:驱动器上的启动。我还删除了PS1提示,我只使用了$
。
我也做过:
$ git config --global core.preloadindex true
$ git config --global core.fscache true
有些东西加速了,但是git命令本身非常慢。知道为什么吗?这是一个strace。
$ GIT_TRACE=1 git stash
09:27:27.099458 git.c:594 trace: exec: 'git-stash'
09:27:27.099458 run-command.c:369 trace: run_command: 'git-stash'
09:27:28.862258 git.c:594 trace: exec: 'git-sh-i18n--envsubst' '--variables' 'usage: $dashless $USAGE'
09:27:28.862258 run-command.c:369 trace: run_command: 'git-sh-i18n--envsubst' '--variables' 'usage: $dashless $USAGE'
09:27:29.096258 git.c:594 trace: exec: 'git-sh-i18n--envsubst' 'usage: $dashless $USAGE'
09:27:29.096258 run-command.c:369 trace: run_command: 'git-sh-i18n--envsubst' 'usage: $dashless $USAGE'
09:27:29.877258 git.c:369 trace: built-in: git 'rev-parse' '--git-dir'
09:27:30.267258 git.c:369 trace: built-in: git 'rev-parse' '--git-path' 'objects'
09:27:30.766458 git.c:369 trace: built-in: git 'rev-parse' '--show-toplevel'
09:27:30.984858 git.c:369 trace: built-in: git 'rev-parse' '--git-path' 'index'
09:27:31.281258 git.c:369 trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
09:27:31.608858 git.c:369 trace: built-in: git 'config' '--get-color' 'color.interactive.help' 'red bold'
09:27:31.967658 git.c:369 trace: built-in: git 'config' '--get-color' '' 'reset'
09:27:32.375258 git.c:369 trace: built-in: git 'ls-files' '--error-unmatch' '--'
09:27:32.702858 git.c:369 trace: built-in: git 'update-index' '-q' '--refresh'
09:27:33.048058 git.c:369 trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
09:27:33.392258 git.c:369 trace: built-in: git 'diff-files' '--quiet' '--ignore-submodules' '--'
No local changes to save
在Cygwin上,实时只有3秒。这里是git bash,9秒。
$ time git stash
No local changes to save
real 0m9.172s
user 0m0.015s
sys 0m0.108s
$
这是Cygwins跟踪比较:
$ GIT_TRACE=1 git stash
13:02:51.567376 git.c:595 trace: exec: 'git-stash'
13:02:51.567376 run-command.c:369 trace: run_command: 'git-stash'
13:02:52.740271 git.c:595 trace: exec: 'git-sh-i18n--envsubst' '--variables' 'usage: $dashless $USAGE'
13:02:52.740271 run-command.c:369 trace: run_command: 'git-sh-i18n--envsubst' '--variables' 'usage: $dashless $USAGE'
13:02:52.990489 git.c:595 trace: exec: 'git-sh-i18n--envsubst' 'usage: $dashless $USAGE'
13:02:52.990489 run-command.c:369 trace: run_command: 'git-sh-i18n--envsubst' 'usage: $dashless $USAGE'
13:02:53.459647 git.c:371 trace: built-in: git 'rev-parse' '--git-dir'
13:02:53.694226 git.c:371 trace: built-in: git 'rev-parse' '--git-path' 'objects'
13:02:53.975720 git.c:371 trace: built-in: git 'rev-parse' '--show-toplevel'
13:02:54.085191 git.c:371 trace: built-in: git 'rev-parse' '--git-path' 'index'
13:02:54.194661 git.c:371 trace: built-in: git 'config' '--get-colorbool' 'color.interactive'
13:02:54.304131 git.c:371 trace: built-in: git 'config' '--get-color' 'color.interactive.help' 'red bold'
13:02:54.413601 git.c:371 trace: built-in: git 'config' '--get-color' '' 'reset'
13:02:54.523071 git.c:371 trace: built-in: git 'update-index' '-q' '--refresh'
13:02:54.775294 git.c:371 trace: built-in: git 'diff-index' '--quiet' '--cached' 'HEAD' '--ignore-submodules' '--'
13:02:54.900403 git.c:371 trace: built-in: git 'diff-files' '--quiet' '--ignore-submodules'
No local changes to save
答案 0 :(得分:0)
首先,关于strace,您现在有了Git 2.27(2020年第二季度)的新选项
请参见commit 3efc128前的commit b6852e1(2020年4月9日)和Johannes Schindelin (dscho
)(2020年4月8日)。
请参见commit a748f3f的Matthias Aßhauer (rimrul
)(2020年4月8日)。
(由Junio C Hamano -- gitster
--在commit b3eb70e中合并,2020年4月22日)
mingw
:通过选择使用strace执行bash来帮助调试签名人:Johannes Schindelin
MSYS2的strace工具对于调试非常有用...通过此补丁,如果设置了环境变量
strace
,则bash将通过GIT_STRACE_COMMANDS
执行,这在调查问题时非常方便。测试套件。还支持通过
GIT_STRACE_COMMANDS
将路径传递到日志文件,以强制Git使用strace.exe
参数调用-o <path>
,即登录文件而不是直接打印日志。当输出可能被调用过程误解为Git输出的一部分时,这很方便。
注意:不是指定值的“
1
”,“yes
”或“true
”或“set GIT_TRACE2_PERFORMANCE=1&& git <command>
”,但是告诉Git让strace.exe直接登录到控制台。
第二,不要忘记trace2
utility的最新Git版本(2.22 +)
对于您而言,Ratings.timed <- read.delim("Ratings.timed.txt", fileEncoding="UTF-16LE")
将有助于查看性能问题发生的位置