QJson与RapidJson性能的简单对比测试

盒子上一位朋友想知道QJson和C++编写的RapidJson之间的性能对比情况,限于精力,我只是简单的测试了下加载一个大的Json文件来对比解析性能(Demos\Delphi\VCL\QJson\Preferences.txt,文件大小:9.81MB),但做测试大家都知道与测试样本的关系很大,这里只对这一个测试用例负责,RapidJson是从官网下载的0.11版。

1、我们先改下rapidjson.h,注释掉不兼容的代码(16-21行改成下面的样子):

//#ifdef _MSC_VER
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
//#else
//#include <inttypes.h>
//#endif

2、新建一个测试项目,由于文件是Ansi编码的,而rapidjson是用UTF8编码的,所以需要转下码,具体测试代码如下:

DWORD T=GetTickCount();
TStringStream *AStream=new TStringStream;
AStream->LoadFromFile("C:\\User\\QDAC3.0\\Demos\\Delphi\\VCL\\QJson\\Preferences.txt");
UTF8String U=AStream->DataString;
Document document;
document.Parse<0>(U.c_str());
T=GetTickCount()-T;
ShowMessage(IntToStr((int)T)+"ms");
delete AStream;

3、修改工程编译目标为Windows 64位,32位下Borland C++编译器由于兼容性问题无法顺利编译通过。

4、运行测试代码,得到解析结果。

至于QJson,直接运行演示程序,用从文件中加载按钮原来的代码测试加载时间。为了公开起见,两者均编译为64位,Release模式。

测试结果如下:

QJson:94ms(94*100/140=67.14%)

RapidJson:140ms(100%)

QJson要明显更快一些,但这个测试因为比较简单,可能对RapidJson未必完全公平,仅供参考。

分享到: