Hasty Briefsbeta

双语

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时间。
  • 该问题现已修复,此事凸显了开发过程中正确测试与性能测量的重要性。