Erlang JSON库:序列化性能?

时间:2009-10-30 20:59:33

标签: json erlang

有许多可用于Erlang的JSON库,我不清楚哪些具有最佳性能特征(其次是易用性),尤其是对于erlang-to-json序列化。

我的用例需要JSON解析和序列化,但Erlang代码可能会产生比接收输入更多JSON输出(即序列化)两个数量级。

作为参考,我所知道的库包括以下内容(可能还有其他我没有找到的):

4 个答案:

答案 0 :(得分:9)

我使用rfc4627.erl(我偶然发现它,性能不是问题)

但是,我确实希望不同的本机erlang库能够同样表现出色。他们分享想法(如code comments中所见)。 AFAIK mochijsonrfc4627共享相同的源erlang格式。

eep018是C,因为它正在努力实现...... hrm ... eep-0018,可能包含在Erlang未来版本中的term_to_json本机编码器。从未尝试过,似乎没有积极维护。

我的最终建议是 mochiweb的mochijson(2)。这是事实上的标准,并且由CouchDB和Facebook等人积极维护和使用。< / p>

至于在mochijsonmochijson2之间进行选择,this可能会对您有所帮助。

答案 1 :(得分:2)

我最近一直在使用jsonerl。它基于mochijson2,使用起来更加简单直观。

答案 2 :(得分:2)

尝试https://github.com/si14/erl_json_test erlang json基准测试。它包括以下基准:

  • 列出项目

  • 的JSONx

  • 的Jiffy

  • Mochijson2

  • JSX

答案 3 :(得分:-2)

希望这个答案不会受到影响,但是:

我也研究了项目的JSON解析和序列化。我不得不并行处理大量数据,所以Erlang听起来很棒!但是很多都是以JSON数据的形式处理字符串,而这就是事情发生的原因。

你可能知道Erlang中的字符串是完整的字符列表。与大多数语言中的字符串不同(char是“约”一个字节),Erlang中的每个字符都由一个完整的32位整数表示!所以,你的字符串已经很大了。

因为它是一个列表,所以对字符串的给定元素的访问是O(N)而不是O(1),正如您在Chars数组中所期望的那样。并且,因为字符串在Erlang中是不可变的,所以简单连接最终可能是一个非常缓慢的过程。最后,我意识到我只是试图使用错误的语言。

你很可能已经知道了所有这些事情,但我觉得把这个留给将来可能会到达你职位的其他人的答案是有用的。