【译】.NET 7 中的性能改进(十二)
💡
原文中文,约18400字,阅读约需44分钟。
📝
内容提要
在.NET 7中,Regex新增了几个支持ReadOnlySpan输入的方法,以提高性能,IsMatch和Count可以与跨度一起工作,EnumerateMatches提供了一种无分配枚举输入所有匹配的方法,Scan方法可以快速跳过不可能匹配的位置,TryFindNextPossibleStartingPosition学会了更多的方法来帮助引擎快速。
🎯
关键要点
- 在.NET 7中,Regex新增了支持ReadOnlySpan输入的方法,以提高性能。
- IsMatch和Count方法可以与ReadOnlySpan一起工作,提供更高效的匹配和计数功能。
- EnumerateMatches方法提供了一种无分配的方式来枚举所有匹配项,返回Ref结构的枚举器。
- Scan方法能够快速跳过不可能匹配的位置,优化匹配过程。
- TryFindNextPossibleStartingPosition方法改进了引擎的性能,能够快速找到下一个可能的匹配位置。
- 引入了新的虚拟扫描方法,支持ReadOnlySpan作为参数,简化了匹配逻辑。
- Count方法通过接收额外信息,优化了匹配计数的效率。
- 新的Regex.Count实现可以绕过Match或MatchCollection,直接在跨度上操作。
- 引擎能够处理ReadOnlySpan输入,提升了整体性能。
- 通过改进的锚点处理,Regex能够更快地找到匹配位置,减少不必要的搜索。
- 循环和回溯的处理得到了显著改进,减少了回溯的发生。
- 通过自动原子性分析,优化了正则表达式的匹配效率,减少了不必要的回溯。
- 交替的优化使得引擎能够更有效地处理复杂的正则表达式,减少潜在的回溯。
➡️