3

我一直在尝试降低我的应用程序的内存使用量,在分析后发现 NSRegularExpression 是一个相当大的内存占用。

我的一个 fistMatchInString 调用(第一个?)分配了 1 MB 的内存,它永远不会被释放。并且对 firstMatchInString 的每次调用都会泄漏一个“NSConcreteValue”(无论是什么)。

您是否遇到过同样的行为,您知道如何解决吗?你知道 NSRegularExpression 的好替代品吗?

在你问之前:我所有的正则表达式模式都很小并且是静态创建的。所有要匹配的字符串也都很小。

4

1 回答 1

1

是的,正则表达式是昂贵的操作。

从 NSPredicate 编程指南中说:“正则表达式匹配尤其是一项昂贵的操作”,并且“因此,您应该在正则表达式之前执行简单的测试”。

我让您阅读谓词编程指南的性能部分。我不知道谓词是否适用于您的案例,但您甚至可以从性能部分中提取一些有价值的信息(位于“使用谓词”一章中)

编辑 :

查看此链接的正则表达式部分,他使用的是静态 NSRegularExpression 而不是每次都分配它。

从这篇文章中,即使它是关于 python 的,“+”似乎更贪婪,所以在你的正则表达式中可能会有一些改进,在表达式本身,一些最佳实践可以实现。

于 2012-07-14T17:24:19.500 回答