Screenshot from 2018-04-14 16-55-04.png

我最近在制作Packetbeat插件时一直在写Golang,我经常听到Golang在正则表达式中很慢,但是我试图看看它是否真的很慢。

与这次大家都喜欢的Python比较。

我肯定在某些情况下每种语言都不错,而在某些情况下它不是很好,但是
这只是实用代码的比较???

输入/输出

我想比较解析SIP name-addr的正则表达式的执行速度。

输入

"Display-name"<sip:0312341234@10.0.0.1:5060>;tag=tag12345678时,请尝试分解如下的正则表达式。

  • 显示名称
  • 0312341234
  • 10.0.0.1
  • 5060
  • 标签= tag12345678

Golang代码

重复次数为1时的输出结果如下

Python代码

重复次数为1时的输出结果如下

测量值

上面的两个代码都设计为重复相同的过程100,000次,因此我想在运行时使用time命令来测量cpu总数。进行5次测量,然后比较最大值,中位数,平均值和最小值。
另外,尝试将所有标准输出丢弃到/dev/null

Golang执行结果

Python执行结果

比较结果

老实说,我认为这没什么不同????

<表格>

Golang Python


<身体> 最大值 25.943 3.856
中位数 25.497 3.561
均值 25.5686 3.6288
最小值 25.251 3.448


[2018/04/14 21:20后记]

如果有的话,似乎在测量"正则表达式编译速度",但是???

我收到一条评论

,然后我再次验证这是事实。

[23:11后记]

似乎我陷入了每个编译阶段,因此我已经构建了它并再次对其进行了测量。

修改为传递已编译的正则表达式。

转到版本

执行结果

Python版本

执行结果

比较

<表格>

Golang Python


<身体> 最大值 4.64 3.106
中位数 4.611 3.014
均值 4.603 3.014
最小值 4.563 2.928


缩小很多,但Golang仍然较慢。

我在某处读到Python很快,而不必一一编译,但是将其应用于其他语言并编写代码是一个不好的例子。感谢您指出!