3

私は自分のアプリのメモリ使用量を減らそうとしていましたが、プロファイリングした後、NSRegularExpression がかなりメモリを消費していることがわかりました。

私の fistMatchInString 呼び出しの 1 つ (最初のもの?) は、決して解放されない 1 MB のメモリを割り当てます。そして、firstMatchInString への各呼び出しは、「NSConcreteValue」(それが何であれ) をリークします。

同じ動作を経験したことがありますか?それを回避する方法を知っていますか? NSRegularExpression に代わる優れた方法を知っていますか?

質問する前に: 私の正規表現パターンはすべて小さく、静的に作成されています。一致するすべての文字列も小さいです。

4

1 に答える 1

1

はい、正規表現はコストのかかる操作です。

NSPredicate プログラミング ガイドによると、「特に正規表現のマッチングはコストのかかる操作です」、「したがって、正規表現の前に簡単なテストを実行する必要があります」。

述語プログラミング ガイドのパフォーマンス セクションを読ませていただきます。述語があなたのケースに適用できるかどうかはわかりませんが、パフォーマンスセクションから貴重な情報を抽出することもできます(「述語の使用」の章にあります)

編集 :

このリンクの正規表現部分を見てください。彼は毎回割り当てるのではなく、静的な NSRegularExpression を使用しています。

この投稿から、たとえそれがpythonについてであっても、「+」はより貪欲であるように思われるため、正規表現、式自体、実装するためのいくつかのベストプラクティスで改善できる可能性があります.

于 2012-07-14T17:24:19.500 に答える