2009-10-12 13 views
6

C'è un modo per migliorare le prestazioni di tramp di emacs? Per me è più veloce aprire un client ftp esterno (filezilla), trasferire file sul disco locale e aprirli in un editor esterno (blocco note) piuttosto che aprirli con emacs. Io uso emacs23.1 sotto windows xp. Ho provato diversi tramp-default-method (telnet, pscp, ftp), tutti hanno le stesse prestazioni.emacs tramp performance

Profiling risultati con ELP-strumento-pacchetto sono i seguenti (ho aperto 3 file remoti di 1,5 MB ciascuno)

tramp-file-name-handler        1461  350.41599999 0.2398466803 
tramp-sh-file-name-handler        1461  350.02699999 0.2395804243 
tramp-send-command          227   179.63400000 0.7913392070 
tramp-send-command-and-check       205   177.77600000 0.8672000000 
tramp-wait-for-regexp         227   176.47800000 0.7774361233 
tramp-wait-for-output         226   176.40000000 0.7805309734 
tramp-barf-unless-okay         18   133.46699999 7.4148333333 
tramp-handle-insert-file-contents      3   132.046  44.015333333 
tramp-handle-file-local-copy       3   131.281  43.760333333 
tramp-accept-process-output       2375  112.95100000 0.0475583157 

Quindi, il trasferimento di file effettivo prende 132 sec, circa 1/3 del tempo totale . Perché trascorre così tanto tempo in tramp-sh-file-name-handler? Ho provato a consigliare una funzione tramp-sh-file-name-handler per memorizzare e restituire risultati memorizzati nella cache, ma non funziona, probabilmente questa funzione ha alcuni effetti collaterali.

Qualche idea su come migliorare le prestazioni del vagabondo? (Io uso emacs 23.1 sotto WindowsXP)

+1

i risultati di profiling elp sono "inclusi"; qualsiasi funzione chiamata tramp-file-name-handler appare nei suoi dati di temporizzazione. Fondamentalmente, stai trascorrendo metà del tuo tempo ad aspettare IO, e un'altra metà a fare qualcosa. Mi occupo solo di questo materiale a livello di sistema operativo; sshfs per linux, SFTPDrive per Windows, ecc. – jrockway

risposta

0

Ho risolto un problema con un paio di script che mi consentono di mget/put e mirror di file o directory. Questi script usano lftp (una versione che è installata con cygwin) e hanno ottime prestazioni.

Erano richieste per pubblicare la mia soluzione. Sfortunatamente, ho solo un prototipo di esso. Non ho tempo per finirlo. Mi serve bene ma non è nello stato di essere pubblicato.

2

Ho trovato che fuse-ssh è molto meglio della modalità vagabondo, se è possibile configurarlo in questo modo.

+0

Grazie per la risposta. Non ho trovato un modo semplice per impostare il fusibile su Windows. C'è un progetto giapponese Ducan, che dovrebbe fare qualcosa di simile ma non ero in grado di installarlo. Sai come farlo funzionare sotto Windows? –

+0

Non è un utente Windows, mi dispiace. –

0

se il caso d'uso migliora, utilizzare il client remoto! Ho fatto ricorso alla modifica da remoto con emacs, questo mi ricorda.

la mia esperienza mi ha portato a credere che la macchina che ospita emacs sarebbe il collo di bottiglia

tuttavia una migliore client SSH può aiutare ... prova la lista a OpenSSH.org (basso nel menu di navigazione a sinistra) mi piace PuTTY su Windows, dove selection = copy & tasto destro del mouse = incolla.

non sono sicuro dei modi per migliorare le prestazioni remote, però. la build predefinita di emacs ha un sacco di lisp ma richiede più disco dello spazio RAM, ed è sempre stato efficiente per me, ad eccezione dei file di grandi dimensioni & net/sys lag.

se il tuo caso presenta funzioni di evidenziazione e auto che non vuoi, quindi la configurazione minima potrebbe aiutare - dovrebbe essere in grado di farlo senza ricostruire.

emacs è così vasto, ho notato di più quando ho scoperto che può inviare/ricevere e-mail. Ho appena esplorato la punta dell'iceberg.

in questo caso, sebbene 'vi' potrebbe essere migliore ... anche con più esperienza di emacs relativamente ho usato piccole porzioni in ogni campo. raramente faccio script o cerco una nuova funzionalità, lo scavo è difficile ma ci sono utili guide di comando per entrambi.

+0

Grazie per la risposta. Devo connettermi dal mio client a diverse macchine remote, quindi un client remoto non è una soluzione per me. Sì, posso usare vi ma ho creato molti script per emacs di cui ho bisogno. E uso emacs come file manager, non solo come editor. –