miloyip/nativejson-benchmark

JsonCPP在debug下非常慢,是否也纳入参考?

peach5460 opened this issue · 2 comments

昨天,我在项目中遇到了一个很匪夷所思的事情。

项目环境:
VS2013Update5
Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
8G内存

jsdoncpp用的是昨天刚从open-source-parsers/jsoncpp下载的1.8.4
分别编译了debug和release的lib做项目依赖。

简化后代码如下:

Json::Value root;
Json::CharReaderBuilder jsreader;
std::istringstream sin(outstr);
std::string err;
if (!Json::parseFromStream(jsreader, sin, &root, &err))
	return false;
return true;

我解析的ourstr有10790107字节长度,在release下jsdoncpp解析还算勉强能接受,内存激涨了150-200M以后,很快就释放了,函数执行结束。
但是在debug下,内存缓慢的增长至400M,然在return true这里,我看着任务管理器里面的内存以每一到两秒一兆的速度释放,人都快崩溃了……
最终,debug下从parse到return true走完一共花了五到十分钟。
不知道是我的代码写法有问题,还是jsdoncpp本身的问题。这种debug速度我是完全无法接受的。

目前,我已经依据此项目的测试结果作为参考,换一个JSON解析库了。
但是我认为,debug下的性能是否也应该作为一个测试的参考呢?
jsdoncpp在release下的性能是勉强OK的,但是在debug下完全没法用,这会导致开发人员根本没办法进行调试。

一般不会比较 debug 配置的性能。这个 benchmark 也是用尽量最优化的配置去测试。
从这个 benchmark 的结果来看,jsoncpp 的性能应该很一般。

嗯,也对。
DEBUG只是程序员用的,发布版本还是以release性能为准。