我一直在尝试降低我的应用程序的内存使用率,在分析之后发现NSRegularExpression是一个相当占用内存的应用程序。
我的一个fistMatchInString调用(第一个?)分配永远不会释放的1 MB内存。而且每次对firstMatchInString的调用都会泄漏一个"NSConcreteValue“(不管是什么)。
你有没有经历过同样的行为,你知道如何避开它吗?你知道NSRegularExpression有什么好的替代品吗?
在您问之前:我所有的正则表达式模式都很小,并且是静态创建的。所有要匹配的字符串也都很小。
发布于 2012-07-15 01:24:20
是的,正则表达式是开销很大的操作。
从NSPredicate编程指南中可以看出:“正则表达式匹配是一项特别昂贵的操作”,“因此,您应该在执行正则表达式之前执行简单的测试”。
我让您阅读predicate programming guide的性能部分。我不知道谓词是否适用于您的情况,但您甚至可以从性能部分(位于“使用谓词”一章)中提取一些有价值的信息。
编辑:
看看这个link的正则表达式部分,他使用的是静态NSRegularExpression,而不是每次都分配它。
从这个post来看,即使是关于python的,"+“似乎更贪婪,所以在正则表达式中可能会有一些改进,在表达式本身中可能会有一些实现的最佳实践。
https://stackoverflow.com/questions/11485725
复制相似问题