【问题标题】:speeding up JSON parsing in Perl在 Perl 中加速 JSON 解析
【发布时间】:2013-07-08 09:44:11
【问题描述】:

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

除了不使用 JSON 包并尝试通过自己解析来加速它之外,我还可以使用任何加速器吗?

编辑:JSON 包是使用cpanm 安装在系统中的。如果通过优化安装过程可以获得任何加速,他们也受到欢迎。

【问题讨论】:

  • 您的系统上是否安装了JSON::XS
  • if json::xs is not available, JSON uses a JSON::PP object instead of JSON::XS and it is very slow as pure-Perl. 来自 JSON 模块的 cpan 文档

标签: json performance perl


【解决方案1】:

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

【讨论】:

  • 谢谢,这有很大的不同。它仍然比正则表达式慢大约 2 倍,但使用 JSON 进行查询更强大。
  • 它比您的正则表达式慢的原因可能是您的正则表达式无法将任何类型的有效 JSON 转换为 Perl 数据结构。
【解决方案2】:

另一个有趣的解决方法:

如果您需要解析 JSON,以便可以从大型 JSON 对象中提取更小的块,并且所述 JSON 对象来自 web 应用程序 - 只需在 JavaScript 中将 JSON 解析并缩减为更小的块,然后再将其发送到 Perl。

JS 具有惊人的快速和高效的字符串到 JSON 解析器(Douglas Crockford's parsernot eval,只是为了清楚一点),即使您从字符串开始并且 不是 JSON 数据结构本身。

【讨论】:

    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2019-05-07
    • 2014-10-14
    • 1970-01-01
    相关资源
    最近更新 更多