.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 对这类

相关新闻

最新新闻

论文怎么降ai率到学校要求?AIGC检测和论文查重必须同时达标

论文怎么降ai率到学校要求?AIGC检测和论文查重必须同时达标

论文怎么降ai率到学校要求?AIGC检测和论文查重必须同时达标 如果按网上流传的AI率标准改稿,直到提交前才看到学院通知,你可能才发现学校使用的检测系统不同,而且AIGC疑似度与重复率需要分别审核。已经修改的内容未必符合正式报告…

2026/8/29 22:02:22
3分钟配置Caddy选择性mTLS认证:内网强制双向认证,公网照常访问

3分钟配置Caddy选择性mTLS认证:内网强制双向认证,公网照常访问

3分钟配置Caddy选择性mTLS认证:内网强制双向认证,公网照常访问 【免费下载链接】caddy Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS 项目地址: https://gitcode.com/GitHub_Trending/ca/caddy 内部服务既要防…

2026/8/29 22:02:22
ai查重率高如何降重?先判断AIGC检测还是论文重复率超标

ai查重率高如何降重?先判断AIGC检测还是论文重复率超标

ai查重率高如何降重?先判断AIGC检测还是论文重复率超标 假设导师只说“AI查重率太高,抓紧降重”,你没有确认报告类型就去改所有标红句,可能直到复检时才发现导师指的是AIGC疑似度,而你处理的是论文重复率。这样不仅会…

2026/8/29 22:02:22
ai文章怎么去掉ai痕迹?改完AI味还要复查AIGC检测和重复率

ai文章怎么去掉ai痕迹?改完AI味还要复查AIGC检测和重复率

ai文章怎么去掉ai痕迹?改完AI味还要复查AIGC检测和重复率 一篇文章读起来每句话都没错,但开头总是“随着”,中间总是“首先、其次”,结尾一定是“综上所述”。作者把这些词删了,再测AIGC疑似度,结果变化不…

2026/8/29 22:02:22
打造高效的人类‑智能体协作团队:从单人模式到多人联机,Anthropic 的四条落地经验

打造高效的人类‑智能体协作团队:从单人模式到多人联机,Anthropic 的四条落地经验

文章目录 一、AI 协作正在从"单人模式"走向"多人联机" 二、何为多人协作智能体 三、四条核心落地经验 经验一:公开协作,为智能体提供充分上下文 经验二:每位人类与智能体都要有明确定位,并配备适配的工具 经验三:确立北极星目标,激发智能体的主动性 …

2026/8/29 22:02:22
蓝桥杯国赛Java B组真题深度复盘:算法核心考点与实战避坑指南

蓝桥杯国赛Java B组真题深度复盘:算法核心考点与实战避坑指南

1. 项目概述:一次深度复盘的价值最近在整理资料时,翻到了2021年第十二届蓝桥杯国赛Java B组的真题。作为一项在国内高校和编程爱好者中颇具影响力的赛事,蓝桥杯的国赛题目往往能集中体现当前对算法、数据结构、工程思维乃至数学建模能力的综合…

2026/8/29 21:57:22