.NET 10 的正则性能现在什么水平?我拿它和 Go、Python、C++、PCRE2 测了一轮 所以我没有试图“复现原文结果”。原文数据不公开就没法严肃复现。我这里做的是另一件事用公开、确定性的规则合成一份数据然后把所有代码放出来让别人可以重新跑。数据生成脚本在仓库里规则很简单生成约 1GB 的文本文件每行是一个 JSON string literalJSON string 里面再放一个紧凑 JSON object每 20 行放一条TSLA也就是大约 5% 命中固定随机种子确保别人生成出来的数据一致实际这次生成的数据是bytes: 1,073,741,855 lines: 4,624,532 expected matches: 231,227 pattern: \TSLA.*?\ seed: 20260702所有实现都先把文件读进内存然后只统计内存中扫描匹配的时间。读取时间也记录了但不参与排序。测了哪些实现这次一共测了 10 个case说明MSVCstd::regexVisual Studio 18 / MSVC STLMinGWstd::regexGCC 16.1.0 / libstdcPCRE2vcpkg PCRE2 10.47PCRE2 JIT显式pcre2_jit_matchPythonrePython 3.12.4GoregexpGo 1.26.2.NET Regex普通Regex构造一次复用.NET CompiledRegexOptions.Compiled构造一次复用.NET GeneratedRegexsource generator 生成的正则.NET NonBacktrackingRegexOptions.NonBacktracking这里有个小点要说明普通new Regex(...)不是每行都 new 一次而是构造一次后复用。每行都 new 那属于测错误用法不是正常业务热路径。.NET 这边大概是这样private const string Pattern \\\TSLA.*?\\\; private static readonly Regex PlainRegex new(Pattern, RegexOptions.CultureInvariant); private static readonly Regex CompiledRegex new(Pattern, RegexOptions.CultureInvariant | RegexOptions.Compiled); private static readonly Regex NonBacktrackingRegex new(Pattern, RegexOptions.CultureInvariant | RegexOptions.NonBacktracking); [GeneratedRegex(Pattern, RegexOptions.CultureInvariant)] private static partial Regex InfoLineRegex();核心循环也没什么花活private static long MatchLines(string[] lines, Regex regex) { long matches 0; foreach (var line in lines) { if (regex.IsMatch(line)) { matches; } } return matches; }C 的 PCRE2 JIT 也不是“编译了 JIT 然后还调用普通 match”这种模糊写法而是明确调用pcre2_jit_match。完整代码直接看 GitHub 就行这里不贴一大坨了。结果每个 casewarmup 1 次正式跑 3 次只统计扫描匹配时间所有 case 匹配数都必须等于231,227结果如下按平均耗时排序排名实现平均单轮扫描1.NET GeneratedRegex125.566 ms2.NET Regex170.996 ms3.NET RegexOptions.Compiled171.583 ms4.NET RegexOptions.NonBacktracking219.780 ms5Go regexp303.017 ms6MSVC std::regex448.698 ms7PCRE2 JIT612.498 ms8Python re894.424 ms9PCRE25,191.270 ms10MinGW/libstdc std::regex26,272.900 ms.NETGeneratedRegex三轮分别是125.294 ms 125.734 ms 125.669 ms这个波动很小所以至少在这份数据上不像是偶然抖出来的。另外我一开始也跑过 1MB 的小数据那个时候 .NET 没这么明显的优势。这个也正常1MB 太小了JIT、tiered compilation、缓存状态、计时噪声都能影响结果。到了 1GB 之后差距就稳定多了。有几个结果挺有意思第一.NET GeneratedRegex真的很猛。这个结果对我来说有点爽但不是完全意外。现在的 .NET Regex 对这类

相关新闻

最新新闻

2026年,重庆市专业的AI平台优化服务商究竟有何独特之处?

2026年,重庆市专业的AI平台优化服务商究竟有何独特之处?

在当今数字化浪潮中,AI大模型技术全面崛起,给全网营销格局带来了颠覆性的变革。企业对于如何在AI平台上提升品牌曝光、精准获客的需求日益增长。在重庆,专业的AI平台优化服务商——重庆百云数知科技有限公司(以下简称“百云数知”…

2026/7/7 7:32:16
2026年选直线滑台供应商,这三个硬指标你验过没?

2026年选直线滑台供应商,这三个硬指标你验过没?

你有没有遇到过这种情况:新买的直线滑台,标称精度0.005mm,装上去跑了两周,就开始“抖”了——不是设备抖,是你心抖。产线停机,良率下跌,供应商推卸说是安装问题,技术员查了三遍都找不…

2026/7/7 7:32:16
关于Nginx中error_page的使用

关于Nginx中error_page的使用

位置:http、server、location(就近原则) 作用:指定请求出现相应的状态码时,跳转到指定地址 状态码范围:300~599 指定nginx外部地址,例如:http://www.baidu.com 指定nginx内部地址&…

2026/7/7 7:32:16
Java计算机毕设之基于 SpringBoot+Vue 的住院病历管理系统的设计与实现 基于 Web 的智能病历数据管理系统(完整前后端代码+说明文档+LW,调试定制等)

Java计算机毕设之基于 SpringBoot+Vue 的住院病历管理系统的设计与实现 基于 Web 的智能病历数据管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/7 7:32:16
Java毕设选题推荐:基于 SpringBoot 的校园运动会赛程编排管理系统的设计与实现 基于 SpringBoot+Vue 的大学生运动会成【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 SpringBoot 的校园运动会赛程编排管理系统的设计与实现 基于 SpringBoot+Vue 的大学生运动会成【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/7 7:32:16
YOLOv10模型改进-特定领域应用-第92篇:YOLOv10改进策略【特定领域应用】| YOLOv10在安防监控中的应用

YOLOv10模型改进-特定领域应用-第92篇:YOLOv10改进策略【特定领域应用】| YOLOv10在安防监控中的应用

一、本文介绍 本文记录的是YOLOv10在安防监控领域的应用。安防监控需要实时检测人员、车辆、异常行为等目标,YOLOv10凭借其高效的推理速度和准确的检测能力,成为安防监控领域的首选目标检测算法。 二、安防监控场景分析 2.1 检测目标 安防监控场景需要检测的目标包括: 人…

2026/7/7 7:27:16

月新闻