magit性能,Every magit operation is slow on windows 7 X64 ---- magit-status takes 20 seconds

Magit runs very slow on my windows 7 X64 machine (office cloud system), but on another Win7 laptop, magit runs fast, the config is almost the same.

I run Emacs -Q and (load “~/.emacs.d/site-lisp/magit/lisp/magit-autoloads.el”) ,magit was compiled from GIT, then use ELP to profile magit-status, the result is, I found that magit-process-file is too slow , and can’t find the reason, please help diagnose it

magit-run-section-hook                            2           26.176673     13.0883365
magit-process-file                                30          24.565554000  0.8188518000
magit-refresh                                     1           21.923354     21.923354
magit-refresh-buffer                              1           21.172768     21.172768
magit-status-refresh-buffer                       1           21.172768     21.172768
magit-git-insert                                  18          15.245783000  0.8469879444
magit-git-string                                  21          10.273156     0.4891979047
magit-insert-status-headers                       1           6.5519870000  6.5519870000
magit-git-str                                     17          6.239242      0.3670142352
magit-insert-unpushed-to-upstream-or-recent       1           5.75449       5.75449
magit-insert-headers                              1           5.723216      5.723216
magit-rev-parse-safe                              15          4.597336      0.3064890666
magit-insert-recent-commits                       1           4.19077       4.19077
magit-git-wash                                    4           3.40891       0.8522275
magit-insert-log                                  2           3.40891       1.704455
magit-rev-verify                                  6           3.12744       0.52124
magit-git-version                                 3           2.736025      0.9120083333
magit-log-wash-log                                1           2.470678      2.470678
magit-insert-upstream-branch-header               1           2.408129      2.408129
magit-rev-parse                                   3           2.392491      0.797497
magit-git-exit-code                               3           2.361217      0.7870723333
magit-debug-git-executable                        1           2.298669      2.298669
magit-rev-format                                  3           1.735729      0.5785763333
magit-insert-unpulled-from-upstream               1           1.7044540000  1.7044540000
magit-insert-unpushed-to-pushremote               1           1.688818      1.688818
magit-rev-name                                    4           1.688818      0.4222045
magit-insert-head-branch-header                   1           1.673181      1.673181
magit-insert-tags-header                          1           1.641906      1.641906
magit-git-success                                 2           1.641906      0.820953
magit-abbrev-length                               1           1.579357      1.579357
magit-git-items                                   2           1.532445      0.7662225
magit-insert-staged-changes                       1           1.501171      1.501171
magit-insert-unstaged-changes                     1           0.938232      0.938232
magit-wash-sequence                               1           0.891321      0.891321
magit-get-current-branch                          7           0.875684      0.1250977142
magit-format-ref-labels                           1           0.844409      0.844409
magit-log-wash-rev                                10          0.844409      0.0844409
magit-get-current-tag                             1           0.844408      0.844408
magit-get-next-tag                                1           0.797498      0.797498
magit-insert-untracked-files                      1           0.797497      0.797497
magit-insert-stashes                              1           0.78186       0.78186
magit-run-hook-with-benchmark                     2           0.750586      0.375293
magit-maybe-save-repository-buffers               1           0.750586      0.750586
magit-save-repository-buffers                     1           0.750586      0.750586
magit-rev-ancestor-p                              1           0.750586      0.750586
magit-bare-repo-p                                 1           0.734949      0.734949
magit-get-all                                     17          0.734948      0.0432322352
magit-get-upstream-branch                         3           0.734948      0.2449826666
magit-get                                         17          0.734948      0.0432322352
magit-insert-merge-log                            1           0.734948      0.734948
magit-git-dir                                     11          0.734948      0.0668134545
magit-config-get-from-cached-list                 18          0.734948      0.0408304444
magit-merge-in-progress-p                         1           0.734948      0.734948
magit-git-output                                  1           0.719312      0.719312
magit-rev-parse-true                              1           0.719312      0.719312
magit-git-true                                    1           0.719312      0.719312
magit-version                                     1           0.718814      0.718814
magit--assert-default-directory                   1           0.015637      0.015637
magit-process-environment                         30          0.0           0.0
magit-repository-local-repository                 1           0.0           0.0
magit-pre-command-hook                            179         0.0           0.0
magit-section-hide                                1           0.0           0.0
magit-hunk-section-p                              1           0.0           0.0
magit-turn-on-auto-revert-mode-if-desired         20          0.0           0.0
magit-section-show                                14          0.0           0.0
magit-unhighlight-region                          14          0.0           0.0
magit-diff-scope                                  2           0.0           0.0
magit-repository-local-get                        1           0.0           0.0
magit-section-highlight                           2           0.0           0.0
magit-section                                     20          0.0           0.0
magit-repository-local-exists-p                   1           0.0           0.0
magit-insert-bisect-log                           1           0.0           0.0
magit-insert-bisect-rest                          1           0.0           0.0
magit-ignore-submodules-p                         2           0.0           0.0
magit-auto-revert-mode-check-buffers              13          0.0           0.0
magit-get-push-branch                             4           0.0           0.0
magit-current-section                             6           0.0           0.0
magit-process-git-arguments                       30          0.0           0.0
magit-insert-rebase-sequence                      1           0.0           0.0
magit-bisect-in-progress-p                        3           0.0           0.0
magit-preserve-section-visibility-cache           71          0.0           0.0
magit--process-coding-system                      30          0.0           0.0
magit-maybe-make-margin-overlay                   6           0.0           0.0
magit-insert-sequencer-sequence                   1           0.0           0.0
magit--age                                        10          0.0           0.0
magit-make-margin-overlay                         16          0.0           0.0
magit-auto-revert-mode-enable-in-buffers          33          0.0           0.0
magit-refresh-get-relative-position               1           0.0           0.0
magit-insert-error-header                         1           0.0           0.0
magit-section-update-highlight                    3           0.0           0.0
magit-diff-expansion-threshold                    28          0.0           0.0
magit-diff-type                                   2           0.0           0.0
magit-process-unset-mode-line-error-status        1           0.0           0.0
magit-region-sections                             2           0.0           0.0
magit-log-propertize-keywords                     13          0.0           0.0
magit-cherry-pick-in-progress-p                   1           0.0           0.0
magit-rebase-in-progress-p                        2           0.0           0.0
magit-section-match-2                             32          0.0           0.0
magit-section-match-1                             38          0.0           0.0
magit--safe-default-directory                     8           0.0           0.0
magit-section-maybe-cache-visibility              15          0.0           0.0
magit-toplevel                                    18          0.0           0.0
magit-section-ident                               148         0.0           0.0
magit-delete-region-overlays                      14          0.0           0.0
magit-delete-line                                 10          0.0           0.0
magit-auto-revert-mode-cmhh                       21          0.0           0.0
magit-get-boolean                                 1           0.0           0.0
magit-section-match-assoc                         7           0.0           0.0
magit-insert-unpulled-from-pushremote             1           0.0           0.0
magit-section-make-overlay                        2           0.0           0.0
magit-file-mode-turn-on                           20          0.0           0.0
magit-insert-child-count                          25          0.0           0.0
magit-section-cached-visibility                   28          0.0           0.0
magit-expand-git-file-name                        8           0.0           0.0
magit-insert-heading                              5           0.0           0.0
magit-file-accessible-directory-p                 8           0.0           0.0
magit-get-push-remote                             4           0.0           0.0
magit-diff-highlight                              2           0.0           0.0
magit-am-in-progress-p                            1           0.0           0.0
magit-insert-am-sequence                          1           0.0           0.0
magit-margin-option                               10          0.0           0.0
magit-log-format-margin                           10          0.0           0.0
magit-revert-in-progress-p                        1           0.0           0.0
magit-get-section                                 28          0.0           0.0
magit-cancel-section                              3           0.0           0.0
magit-insert-push-branch-header                   1           0.0           0.0
magit-section-match                               8           0.0           0.0
magit-file-section                                8           0.0           0.0
magit-auto-revert-buffers                         1           0.0           0.0
magit-file-section-p                              28          0.0           0.0
magit-insert-diff-filter-header                   1           0.0           0.0
magit-section-goto-successor                      1           0.0           0.0
magit-insert-bisect-output                        1           0.0           0.0

Magit 2.90.1, Git 2.20.1.windows.1, Emacs 26.1, windows-nt

magit-git-executable: “C:/Program Files/Git/mingw64/libexec/git-core/git.exe” (2.20.1.windows.1) exec-path: (“g:/apache-maven-3.6.0/bin” “C:/Python27” “C:/Python27/Scripts” “C:/Program Files/7-Zip” “C:/Program Files/CMake/bin” “C:/Program Files (x86)/ImageMagick-7.0.7-Q16” “D:/emacs/bin” “C:/Windows/system32” “C:/Windows” “C:/Windows/System32/Wbem” “C:/Program Files/Git/cmd” “d:/emacs/libexec/emacs/26.1/x86_64-w64-mingw32”) g:/apache-maven-3.6.0/bin (t) C:/Python27 (t) C:/Python27/Scripts (t) C:/Program Files/7-Zip (t) C:/Program Files/CMake/bin (t) C:/Program Files (x86)/ImageMagick-7.0.7-Q16 (t) D:/emacs/bin (t) C:/Windows/system32 (t) C:/Windows (t) C:/Windows/System32/Wbem (t) C:/Program Files/Git/cmd (t) C:/Program Files/Git/cmd/git.exe (2.20.1.windows.1) d:/emacs/libexec/emacs/26.1/x86_64-w64-mingw32 (t)


with-editor: c:/Users/g00280886/AppData/Roaming/.emacs.d/site-lisp/magit/lisp/with-editor.el emacs: d:/emacs/bin/emacs (26.1) system: system-type: windows-nt system-configuration: x86_64-w64-mingw32 system-configuration-options: --without-dbus --host=x86_64-w64-mingw32 --without-compress-install ‘CFLAGS=-O2 -static -g3’ server: server-running-p: t server-process: # server-use-tcp: t server-name: server19040 server-socket-dir: nil WARNING: not an accessible directory server-auth-dir: ~/.emacs.d/server/ server server19040 with-editor-emacsclient-executable: value: d:/emacs/bin/emacsclient.exe (26.1) default: d:/emacs/bin/emacsclient.exe (26.1) funcall: d:/emacs/bin/emacsclient.exe (26.1) path: $PATH: “G:\apache-maven-3.6.0\bin;C:\Python27;C:\Python27\Scripts;C:\Program Files\7-Zip;C:\Program Files\CMake\bin;C:\Program Files (x86)\ImageMagick-7.0.7-Q16;D:\emacs\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Git\cmd” exec-path: (g:/apache-maven-3.6.0/bin C:/Python27 C:/Python27/Scripts C:/Program Files/7-Zip C:/Program Files/CMake/bin C:/Program Files (x86)/ImageMagick-7.0.7-Q16 D:/emacs/bin C:/Windows/system32 C:/Windows C:/Windows/System32/Wbem C:/Program Files/Git/cmd d:/emacs/libexec/emacs/26.1/x86_64-w64-mingw32) with-editor-emacsclient-path: d:/emacs/bin (t) d:/emacs/bin/emacsclient.exe (26.1) g:/apache-maven-3.6.0/bin (t) C:/Python27 (t) C:/Python27/Scripts (t) C:/Program Files/7-Zip (t) C:/Program Files/CMake/bin (t) C:/Program Files (x86)/ImageMagick-7.0.7-Q16 (t) D:/emacs/bin (t) D:/emacs/bin/emacsclient.exe (26.1) C:/Windows/system32 (t) C:/Windows (t) C:/Windows/System32/Wbem (t) C:/Program Files/Git/cmd (t) d:/emacs/libexec/emacs/26.1/x86_64-w64-mingw32 (t)

说不定笔记本有SSD呢。

Magit在Windows慢是通病。没有什么好的解决办法,magit作者在利用dynamic module来搞Git操作。避免反复调用git.exe导致在Windows下卡爆

是啊,windows下要是都卡就认了,可是在那个笔记本上非常快

我以前也有相似问题,然后找了下方帖子的内容,加了这两行后速度改善了很多:

 (setq projectile-git-submodule-command nil)
 (setq inhibit-compacting-font-cache t)

希望可以有帮助。

https://www.reddit.com/r/emacs/comments/8v4v7o/

1 个赞

大家有没有碰到过magit commit buffer中中文文件名没有解码的问题?buffer coding已经设置为utf-8。平台为Windows。其他buffer的中文显示都正常。