Ten years in the wrong regex lane
8 months ago
- #regex
- #iOS
- #performance
- AdGuard在iOS上使用Safari内置的内容拦截机制,该机制依赖正则表达式(regexps)进行URL匹配。
- AdGuard初始的URL模式正则表达式转换方案并不理想,导致规则编译速度慢且CPU占用率高。
- 一份错误报告显示,'||'(URL起始符)的正则表达式仅匹配单层子域名,与其他AdGuard版本行为不一致。
- 修正后的正则表达式能匹配所有层级子域名,性能显著提升:追踪保护规则编译提速5.5倍,基础过滤器编译提速2.8倍。
- 最初有缺陷的测试方法缺乏精确测量工具,仅依赖人工观察而非性能分析。
- 十年间,低效的正则表达式导致iOS用户累计消耗超过5000万小时CPU时间。
- 该问题现已修复,此事凸显了开发过程中正确测试与性能测量的重要性。