[性能] NSRegularExpression 最好重用

2015-01-08 10:41:53 +08:00
 BB9z
NSRegularExpression 的创建非常非常耗时(至少在某些设备上)。在一台 5C 上实测结果显示,在一段总计消耗 CPU 24s 的列表滚动历程中,创建 NSRegularExpression 竟然占用了 17s (70%) 的时间,而之前猜测耗时的富文本绘制只占了不到 0.5s。
3650 次点击
所在节点    iDev
4 条回复
Elethom
2015-01-08 15:30:26 +08:00
能重用的最好都重用, best practice 是將 init 寫入 getter 中, 方便重用且可以隨時釋放. 很多類似的東西例如 formatter 也是一樣, 創建非常耗時.
fbr91
2015-01-16 16:22:23 +08:00
NSRegularExpression怎么重用 -。-
dcty
2015-01-22 15:40:47 +08:00
@fbr91
+ (NSRegularExpression *)URLExpression
{
static NSRegularExpression *urlExpression;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
urlExpression = [NSRegularExpression regularExpressionWithPattern:urlExpressionString options:NSRegularExpressionCaseInsensitive error:nil];
});
return urlExpression;
}
fbr91
2015-01-22 22:18:29 +08:00
@dcty 3ks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/160236

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX