prestazione "guardando indietro"


10

Ho un po 'di codice usando (looking-back … (line-beginning-position)). Doc stringa di looking-backstati che è meglio evitare questa funzione a causa della lentezza. Sono curioso che il seguente approccio sia più veloce?

(save-excursion
  (goto-char (line-beginning-position))
  (looking-at regexp stuff))

Sarà più veloce. Ma questo non è un codice equivalente.
abo-ABO

@ abo-abo, sì, non lo è. Ma nel mio caso credo di poter presentare looking-atfacilmente la versione. Grazie.
Geradlus_RU,

2
Il più grande problema di prestazioni del guardare indietro è quando non ha limiti (o limiti lontani). Se consideri (with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))Vedrai che è molto veloce. Ora cambia invece la regexp ".*y": è insopportabilmente lenta anche se è chiaro al lettore umano che questo non può mai eguagliare.
YoungFrog,

Risposte:


9

Decisamente. Otterrai particolarmente se vuoi solo testare char-beforeo cercare all'indietro una stringa letterale. E se è necessario utilizzare, looking-backprovare a utilizzare un LIMITargomento, se possibile.

Vedi Emacs bug # 17284 per un esempio.

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.