「振り返る」パフォーマンス


10

私はいくつかのコードを使用してい(looking-back … (line-beginning-position))ます。looking-back遅いので、この関数は避けた方がよいとのドキュメントの文字列。私は次のアプローチがより速くなることに興味がありますか?

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

それはより速くなります。しかし、これは同等のコードではありません。
abo-abo、2015年

@ abo-abo、うん、そうではない。しかし、私の場合、looking-atバージョンを簡単に導入できると思います。ありがとうございました。
Geradlus_RU

2
振り返りの最大のパフォーマンスの問題は、制限がない(または制限が遠い)場合です。あなたが考えるならば、(with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))あなたはそれが非常に速いのを見るでしょう。今度は正規表現を".*y"代わりに変更します。これは決して一致することができないことが人間の読者には明らかですが、耐えられないほど遅いです。
YoungFrog、2015年

回答:


9

間違いなく。char-beforeリテラル文字列をテストまたは後方検索するだけの場合に特に役立ちます。また、使用する必要がある場合looking-backLIMIT、可能であれば引数を使用してください。

例については、Emacsバグ#17284を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.