语言或库之间的正则表达式性能

Dal*_*mas 5 regex libraries

我找不到关于这个主题的任何内容,所以我想知道是否有人比较过不同语言之间正则表达式匹配的速度。我想知道哪种语言可以更快地进行正则表达式评估,因为在我当前的项目中,我需要不断评估大量的正则表达式。语言的选择将主要基于此性能。

我的想法是 C/C++ 自然会更快,但我想尽可能避免它,我不确定我是否正确。例如,C# 库可能将本机代码与 P/Invoke 一起使用,因此速度差异可能会很荒谬。但我不知道该选择哪个库,或者是否需要围绕 C++ 库创建一个包装器(哪个?)。

Ala*_*ore 4

什么的正则表达式?他们会使用前瞻、后瞻、反向引用、勉强量词、原子组、所有格量词等功能吗?

其他响应者已链接到regex-dna 基准测试,但它仅使用所有正则表达式风格共享的最基本功能,例如 Kleene 星号 ( *) 和交替 ( |)。因此,虽然 GNU C/C++ 实现似乎是明显的赢家,但如果您需要我上面列出的任何功能,它们不会给您带来任何好处。

另一个考虑因素是 Unicode 支持。如果您正在处理实际文本(而不是像regex-dna基准测试中那样表示为文本的数据),则应该使用具有良好 Unicode 支持的正则表达式风格。

我建议你研究一下 C#。.NET 正则表达式风格并没有速度慢的名声(在我看来,这是关于正则表达式速度的唯一明智的说法),并且对于性能关键型应用程序,它提供了直接编译为字节代码的选项,以显着提高性能。