limiti pratici sulla dimensione del file in modalità org?


13

Ho un file in modalità org che esegue circa 6.000 righe con un centinaio di titoli di primo livello. Ha iniziato a richiedere circa un minuto per caricare o salvare, e occasionalmente invia emacs nelle erbacce e devo forzarlo a smettere.

Qualcuno di voi pensa che questo sia un file troppo grande da gestire praticamente in modalità org? Hai esperienza con file più grandi? Si verificano gli stessi tipi di ritardi? O dovrei cercare altrove le cause della lentezza, come tutti gli altri pacchetti emacs che ho installato? Forse sto solo chiedendo troppo agli emacs in generale.

Questo è con homebrew emacs 24.4 su Mac OS X Mavericks.


2
Stai usando qualcos'altro insieme ad esso, come linum-mode? Quali altre modalità secondarie speciali sono attive (se presenti)?
elenco delle leggi

Ne ho troppi da elencare ... Ho iniziato con emacs-live (la cassetta degli attrezzi del clojure) e ho caricato in modo promiscuo ogni pacchetto dall'aspetto interessante che ho potuto trovare in elpa e marmellata. Ho intenzione di fare un test con un'installazione di emacs nuda; se la modalità org funziona bene, inizierò a bisecare i miei pacchetti. Potrebbe essere un buon momento per ricominciare.
Reb.Cabin

2
Questo file non è troppo grande da gestire. Ho esperienza con un file di 7000 righe github.com/grettke/home/blob/master/ALEC.org e pochissime intestazioni. Non ho esperienza di caricamento o salvataggio di lentezza. Rallento quando collasso i titoli, quindi corro con #+STARTUP: showeverything. Hai gli Emac più recenti forniti con la più recente modalità org. Inizia Emacs con emacs -Qe aggiungi lentamente i pacchetti per restringere il pacchetto offensivo rallentando le cose. Sono su "24.4.1" e "8.2.10" emacs e org.
Grettke,

Risposte:


18

Una delle caratteristiche meno conosciute di Emacs è che ha un profiler! Supponiamo che il tuo file sia chiamato foo.org, quindi puoi farlo:

M-xprofiler-start

C-x ffoo.org

M-xprofiler-report

Dopo aver fatto tutto ciò, Emacs farà apparire un buffer con statistiche sull'utilizzo della CPU (puoi anche scegliere di creare un profilo della memoria o della CPU e della memoria, quando avvii il profiler). Questo dovrebbe darti alcuni indizi su quali funzioni impiegano più tempo per eseguire.


Sembra che se il mio buffer ha più di 7k linee, ha pause tremendamente lunghe. Sai perché è così?
user8128167

@ user89861 La mia prima ipotesi sarebbe la fontificazione, ma senza provare a profilare è difficile dirlo.
wvxvw,

OK, questo è quello che ottengo per un rapporto del profiler: + timer-gestore-evento 408694 96% + comando-esegui 14634 3% + ... 1480 0% + redisplay_internal (funzione C) 183 0% + isearch-pre-command -hook 1 0%
user8128167

@ user89861 verifica se una di queste due variabili: stackoverflow.com/a/11670718/5691066 ti darà un suggerimento sul timer in esecuzione.
wvxvw,

3

Ho rimosso ogni pacchetto dal mio ambiente emacs e ora la modalità org funziona perfettamente sul mio file di 6.000 righe.

Un'altra cosa che avevo caricato stava causando il problema. Dovrò dividere in due le mie installazioni di pacchetti per capire di cosa si tratta, ma ora la modalità org sembra a posto.


Ha fatto una nuova installazione di emacs-live - che non stava causando i problemi.
Reb.Cabin

Se alla tua domanda è stata data una risposta soddisfacente e non hai bisogno di ulteriori risposte, considera di accettare la tua risposta, in modo che questa venga rimossa dall'elenco delle domande senza risposta.
Estratto il

@Drew - C'è un periodo di attesa per accettare la propria risposta - qualcosa come 36 o 48 ore.
elenco delle leggi

1
@lawlist: OK. Ma non esiste una lista d'attesa a pensare se potresti voler semplicemente eliminare la domanda perché le domande e risposte potrebbero non essere così utili / interessanti. ;-)
Drew

3
la domanda ha portato alla luce l'interessante punto del profiler, quindi la domanda ha avuto un lato / effetto utile :)
Reb.Cabin
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.