在Perl中加速JSON解析

在Perl中加速JSON解析,json,performance,perl,Json,Performance,Perl,我一直在perl脚本中使用JSON包,该脚本解析一长串相对较短的JSON字符串,并使用Devel::NYTProf分析了该过程。在解析过程中,JSONstring函数似乎占用了大部分时间 除了不使用JSON包并尝试通过自己解析来加速它之外,我还有什么可以使用的加速方法吗 编辑:JSON包是使用cpanm安装在系统中的。如果通过优化安装过程可以提高速度,也欢迎这样做 尝试安装。然后,“使用JSON”会自动使用XS版本。此模块是用C编写的,性能非常好。另一个有趣的解决方法: 如果您需要解析JSON,

我一直在perl脚本中使用JSON包,该脚本解析一长串相对较短的JSON字符串,并使用Devel::NYTProf分析了该过程。在解析过程中,JSON
string
函数似乎占用了大部分时间

除了不使用JSON包并尝试通过自己解析来加速它之外,我还有什么可以使用的加速方法吗


编辑:JSON包是使用
cpanm
安装在系统中的。如果通过优化安装过程可以提高速度,也欢迎这样做

尝试安装。然后,“使用JSON”会自动使用XS版本。此模块是用C编写的,性能非常好。

另一个有趣的解决方法:

如果您需要解析JSON,以便可以从一个大型JSON对象中提取较小的块,并且所述JSON对象是通过一个webapp提供的——只需在将JSON发送到Perl之前,在JavaScript中解析并将其缩减为较小的块


JS具有惊人的快速和高效的字符串到JSON解析器(,不是
eval
,只是为了澄清一下),即使您从字符串开始,而不是JSON数据结构本身。

您的系统上是否安装了
JSON::XS
如果JSON::XS不可用,JSON使用JSON::PP对象而不是JSON::XS,并且与纯Perl一样速度非常慢。
从cpan docs for JSON ModuleTasks中,这产生了巨大的差异。它仍然比正则表达式慢,但是使用JSON查询功能更强。它比正则表达式慢的原因可能是正则表达式无法将任何类型的有效JSON转换为Perl数据结构。