实测4款rust正则库性能对比,pcre2性能最高?官方库有严重的性能问题?你可能误会了
实测4款rust正则库性能对比,测试场景如下:
对一个276kb的json文本进行格式化,循环100次
格式化前是单行压缩过的文本,长这样
格式化后长这样
下面是参赛选手:
1.fancy
2.pcre2
3.regex
4.automata
比赛开始,执行cargo run...
下面是执行结果实测图
看到这。。。rust写的程序好像性能好像也不咋样啊,除了pcre2,都花了13秒多,pcre2性能领先这么多的么
后来我去网上找了一番看看其他网友这么评测,果然和我实测结果一样,不少人都说rust官方库有严重性能问题,以下是其他网友的实测图
本质上PCRE2是google的C++正则库,Rust中的PCRE2只是做了个接口
这也不难理解为什么pcre2性能是最高的,因为核心执行不走rust,相当于rust调用外部静态库
不过当我build成发布版本后的,重新执行程序,才发现上面的结果并不是rust程序的完全体,rust程序完全体运行结果长这样
可以看到执行结果性能表现都有大幅提升,pcre2性能不再是最高的,反而是垫底的,从第一名滑到最后一名。
除了pcre2,其他3款原生rust程序实现的正则库表现都相当优秀,automata性能是最高的。
写在结尾:
另外,我又用java和go还有python,干了同样的事情,对同一个json文件,做同样的循环100次格式化操作,发现java是真的优秀啊,性能表现也只比rust低一点点,go表现的有点拉跨,性能还不如python,当然我觉得这个锅不应该由go来背,只能说go的官方正则库有待优化空间