Rückblick Leistung

10

Ich habe Code mit (looking-back … (line-beginning-position)). Doc looking-backgibt an, dass es besser ist, diese Funktion wegen Langsamkeit zu vermeiden. Ich bin gespannt, ob der folgende Ansatz schneller sein wird.

(save-excursion
  (goto-char (line-beginning-position))
  (looking-at regexp stuff))
Geradlus_RU
quelle
Es wird schneller sein. Dies ist jedoch kein äquivalenter Code.
Abo-Abo
@ abo-abo, ja, das ist es nicht. Aber in meinem Fall glaube ich, dass ich die looking-atVersion leicht einführen kann. Vielen Dank.
Geradlus_RU
2
Das größte Leistungsproblem beim Rückblick ist, wenn es kein Limit gibt (oder ein Limit, das weit entfernt ist). Wenn Sie überlegen, werden (with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))Sie sehen, dass es sehr schnell ist. Ändern Sie nun ".*y"stattdessen den regulären Ausdruck in : Es ist unerträglich langsam, obwohl dem menschlichen Leser klar ist, dass dies niemals mithalten kann.
YoungFrog

Antworten:

9

Bestimmt. Sie profitieren besonders, wenn Sie nur eine Literalzeichenfolge testen char-beforeoder rückwärts suchen möchten . Und wenn Sie verwenden müssen, looking-backversuchen Sie LIMIT, wenn möglich, ein Argument zu verwenden .

Ein Beispiel finden Sie unter Emacs-Fehler Nr. 17284 .

Drew
quelle