• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

正则之坑 

最近在用golang重构一段php的代码,其中php用了大量正则,重构成golang之后,却发现性能大大下降…….. 于是乎就来好好对比一下. 假如我们php的要实现的匹配是这样的:

php实现

可以看到运行需要的时间:15.811277866364s

Regexp实现

然后我们再用golang官方的正则库regexp进行实现:

可以看到运行需要的时间:252.739116391s.

效率是如此之低下………

rubex实现

不过,后来找到了另外一个golang的正则包, https://github.com/moovweb/rubex

测试了一下,时间只要6.177984456s

Slice实现

既然只是简单的匹配,那如果我们换个角度来解决这个问题,看看效率有没有提高.

可以看到运行需要的时间:8.41121398s.

Compile时间

对于正则,使用时需要compile一次,然后再Find

进行10000次测试,可以看到正则的时间为26.098313702s,其中compile花费的时间为16.886362915S

Compile竟然花费了如此之多的时间!

码字很辛苦,转载请注明来自ChenJiehua《正则之坑》

评论