Je suis obligé d'utiliser Windows 10 pour un projet. Oui, je préfère utiliser GNU / Linux. Pour garder ma raison, j'ai essayé de considérer Windows comme un chargeur de démarrage pour Emacs :)
Malheureusement, Magit (l'une de mes parties préférées d'Emacs, qui compense également l'absence d'une bonne ligne de commande sous Windows) est insupportablement lente. J'ai un SSD, 16 Go de RAM et un i7 quad-core mais cela prend huit secondes pour s'exécuter magit-status
sur un petit référentiel. Ensuite, lorsque je souhaite effectuer un autre changement, cela prend environ 5 secondes par fichier .
Voici ce que j'ai essayé:
$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256
- Ajout de l'ensemble du projet à la liste d'exclusion de Windows Defender (mon seul AV)
- Définir le
magit-git-executable
msysgit normal que j'ai téléchargé ( https://git-for-windows.github.io/ ). J'ai vérifié etgit status
ici prend <1 seconde. Je sais que celamagit-status
fait beaucoup plus, mais c'est trop.
Quelqu'un peut-il suggérer des moyens d'accélérer cela? Je ne peux pas imaginer que quelqu'un utilise Magit sur Windows comme ça.
Il a été suggéré que cette question était en double, mais ils ont demandé:
J'ai du mal à comprendre pourquoi Emacs a un temps de démarrage sensiblement plus court sur Ubuntu que sur Windows. Quelqu'un connaît la réponse?
Je connais au moins quelques raisons pour lesquelles Emacs, Git et Magit sont plus lents sous Windows. Je demande comment optimiser Magit pour faire moins de choses, ou mettre en cache les résultats, ou quelque chose, même si c'est au détriment des fonctionnalités.
git-status
prend <1 seconde? Elle doit être essentiellement instantanée. Y a-t-il un retard perceptible?git
commandes équivalentes à partir de la ligne de commande?magit-git-executable
sera probablement un peu plus rapide (ceux danscmd
etbin
sont en fait des wrappers, siexecutable-find
retourne l'un d'eux magit tentera de définirmagit-git-executable
le "vrai" git). 8 secondes pour un petit référentiel semble cependant que quelque chose d'autre ne va pas, prend environ 0,8 seconde pour le dépôt de magit ici (Windows 8).magit-refresh-verbose
àt
.Réponses:
J'ai en fait fait beaucoup de recherches à ce sujet et, fondamentalement, le problème est que Git pour Windows est nul
Il s'agit du bogue en amont: https://github.com/git-for-windows/git/issues/596 et il nécessite que quelqu'un réécrive les scripts shell en C afin qu'il n'y ait plus de fourche de commande. Pour moi, c'est le rebase interactif qui est le vrai tueur (je peux lancer un rebase interactif, aller faire du thé, revenir, lire des nouvelles, boire du thé, et puis peut-être que c'est fini. C'est bien pire que beaucoup de gens pense que c'est le cas), mais les appels généraux de type statut sont également suffisants pour interrompre le rythme de travail.
Une alternative pourrait être de mettre à jour jGit pour prendre en charge les commandes que magit utilise, puis de l'exécuter dans nailgun pour réduire le temps de démarrage de la JVM, j'ai commencé un fil pour en discuter: http://dev.eclipse.org/mhonarc/lists/ jgit-dev / msg03064.html
Vous voudrez peut-être lire /programming/4485059 pour quelques accélérations potentielles, mais honnêtement, vous les remarquerez à peine.
Quelque chose que vous pouvez faire dans magit est de suivre les conseils de l'auteur pour mettre en place un minimum
magit-status
juste pour la mise en scèneAlors, connaissez-vous des développeurs C ou Java expérimentés qui seraient en mesure d'aider avec l'une des solutions pour corriger git ou jGit?
la source
magit-status
prend aussi très longtemps, et je ne pense pas que le statut utilise la plupart des scripts shell.magit-status
code "minimal" , il semble m'aider un peu (ça réduit monmagit-refresh
temps à 2-3 secondes).magit-staging
prend quelques secondes pour moi aussi. Assez pour interrompre ma réflexion, mais pas assez pour détruire ma journée.magit-status
est lent, c'est parce qu'il appellegit
peut-être 10 ou 20 fois. Le démarrage de nouveaux processus sur Windows est extrêmement lent par rapport aux plates-formes GNU. Les scripts shell en sont un cas extrême (car à peu près chaque instruction est un nouveau processus)Ayant récemment regardé la liste des
call-process
appels demagit-status
pour une autre raison, il m'est apparu que certains d'entre eux peuvent être mis en cache. Avec les conseils suivants,magit-status
le dépôt de Magit passe de 1,9 à 1,3 seconde (ma mesure précédente de 0,8 s mentionnée dans les commentaires était pour un ordinateur différent (plus rapide)). Si vous utilisez déjàmagit-staging
l'autre réponse, cela n'aidera probablement pas beaucoup: j'ai vu une réduction de 0,16 à 0,12 seconde (mais c'est à peine plus grand que le bruit de mesure).AVERTISSEMENT: cela ne prend pas en charge la mise à jour du cache, donc les choses peuvent mal tourner (surtout si vous tripotez votre configuration git).
la source
nil
.