Ritardo di movimento del punto Emacs (cursore)


12

Quando si esegue previous-line, C-po <up>il cursore salta su una linea senza alcuni problemi o ritardi. Quando è in esecuzione next-line, C-no <down>il cursore salta correttamente su una linea, ma con un ritardo significativo. Quando tengo premuto il tasto Giù non riesco nemmeno a vedere il punto in movimento, appare solo da qualche parte in basso. Ho gestito il profiler di Emacs e sembra che il colpevole sia cl-position. Ciò che funziona è che previous-lineletteralmente sposta il cursore, mentre next-lineesegue molte funzioni.

Uscita del profiler

Qual è il problema e come può essere risolto?


Stai usando visual-line-mode? Hai delle linee molto lunghe?
Disegnato il

Non uso visual-line-modee non ho linee lunghe.
Damian Chrzanowski,

Risposte:


23

Ho trovato una risposta alla mia domanda restringendo la parte birichina e cercando su Google. Sono riuscito a ridurre il ritardo di 10 VOLTE !!!! Voglio dire .... È pazzesco su quanta potenza di calcolo next-linestava usando per spostare il cursore verso il basso?!?!

La correzione:

Inserisci questo codice nel tuo init.el: (setq auto-window-vscroll nil)

La prova:

Il ritardo si è ridotto in modo significativo

Ora next-linenon si attiva line-move-partialquindi riducendo il ritardo. Non mi ricordo la creazione auto-window-vscrolla t. Non era da nessuna parte in nessuno dei miei .elfile, non sono sicuro di come sia stato impostato tper iniziare. Quindi, se qualcuno ha problemi di prestazioni con il movimento del cursore, la correzione di cui sopra ridurrà il ritardo da circa il 50% -80% del tempo della CPU al 5% del tempo della cpu !!!

Per verificare rapidamente se si è interessati basta eseguire C-h v auto-window-vscroll. Se è impostato su di tte, potresti avere grossi problemi di prestazioni. Verificare con il profiler Emacs se il movimento del cursore provoca effettivamente un ritardo.

Buona fortuna amici amanti di Emacs !!!

Fonte di correzione


Si prega di prendere in considerazione la presentazione di un'Emacs bug (o richiesta di miglioramento) per questo: M-x report-emacs-bug.
Disegnato il

2
Farò, come vedo che questo è un problema per molte persone.
Damian Chrzanowski il

1
Grazie, Damian, migliora le prestazioni ma mi sento ancora un po 'insensibile
Neeraj Verma

3

Non sono assolutamente sicuro di quale sia il problema, ma il tuo rapporto del profiler sembra indicare che posn-at-point esegue una visualizzazione più del previsto, il che a sua volta provoca il ricalcolo della linea di modalità e che la linea elettrica dovrebbe fare più sforzi per memorizzare il suo calcolo per la modelina.

IOW, ti suggerisco M-x report-emacs-buge potresti anche segnalare un bug ai manutentori di powerline.


0

Sembra che tu stia usando powerline. In particolare, visualizzi il nome del progetto proiettile nella tua modeline. Di recente sono stati apportati alcuni miglioramenti al pacchetto proiettile che ne hanno mitigato alcuni. Assicurati di essere aggiornato.

https://github.com/bbatsov/projectile/issues/1212

https://github.com/bbatsov/projectile/pull/1213

È anche possibile memorizzare le funzioni chiamate dalla modeline. L'ho fatto molto sulla mia modeline per renderlo molto veloce.


Il problema è già stato risolto, Projectile o Power line non erano il problema
Damian Chrzanowski

Sono contento che tu l'abbia risolto. Il tuo profilo ha indicato il rallentamento proveniente dal proiettile. Potrebbe essere che l'impostazione di auto-window-vscroll su zero causi a emacs di saltare i calcoli della riga di modalità non necessari. Ad ogni modo, felice di averlo risolto!
Aaron Jensen,

Questo è un buon punto. Non ho davvero avuto il tempo di verificare quale pacchetto fosse il problema. Grazie per i suggerimenti però!
Damian Chrzanowski

0

Ho notato che anche il mio doom-modelinesta contribuendo al ritardo. In effetti, si dice nel documento di doom-modeline:

 ;; If it brings the sluggish issue, disable `doom-modeline-enable-word-count' or
 ;; remove the modes from `doom-modeline-continuous-word-count-modes'.

Dopo aver effettuato l'impostazione, (setq doom-modeline-enable-word-count nil)ho riscontrato un notevole aumento dei movimenti del cursore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.