C ++最快的JSON读写器

我需要一个C ++ JSONparsing器和编写器。 速度和可靠性是非常关键的,我不在乎接口是否好,如果是基于Boost的,甚至C语言分析器都是好的(如果它比C ++快很多)。

如果有人有可用的JSONparsing器的速度的经验,请告知。

http://lloyd.github.com/yajl/

http://www.digip.org/jansson/

真的不知道他们是如何比较速度的,但是第一个看起来像是扩展到真正大JSON数据的正确思路,因为它一次只parsing一小块,所以他们不需要保存所有的数据内存一次(这可以更快或更慢取决于库/用例)

rapidjson是一个C ++ JSONparsing器/生成器,旨在实现快速和小内存占用。

有一个与YAJL和JsonCPP的性能比较 。


更新:

我创build了一个开源项目Native JSON基准testing ,评估29(和增加)的C / C ++ JSON库,在一致性和性能方面。 这应该是一个有用的参考。

https://github.com/quartzjer/js0n

最丑陋的界面可能,但是不要问你的问题。 零分配。

http://zserge.com/jsmn.html另一个零分配的方法。;

上面提到的解决scheme都是dynamic的内存分配,因此根据数据结构不可避免地会在某个时候变慢,而且在像embedded式系统这样的堆栈受限的环境中将是危险的。

vjson,rapidjson和sajson的基准在这里: http ://chadaustin.me/2013/01/json-parser-benchmarking/如果你对这样的事情感兴趣。

而要回答你的“作家”这个问题的一部分,我怀疑你可以打败一个有效的

 printf("{%s:%s}",name,value) 

用任何库实现 – 假设你的printf / sprintf实现本身是轻量级的。

编辑:实际上,让我把它放回去,RapidJson只允许通过它的MemoryPoolAllocator堆栈分配,实际上这是默认的GenericReader。 我没有做比较,但我希望它比这里列出的任何其他东西更强大。 它也没有任何依赖性,它不会抛出exception,可能使它最终适合embedded式。 完全基于头部的库,所以很容易包含在任何地方。