【已解决】关于json reader 效能低​​落问题

关于json reader 效能低​​落问题

在UIReader的时候,
如果这个UI Layout使用了太多UI控件
会发现widgetFromJsonDictionary这个function占了太多的时间,
以SampleChangeEquip这个范例project来说
光是Read UI Json就花了4秒多,
原先以为是在widgetFromJsonDictionary内有建立Sprite
所以是LoadTexture造成的,
但是后来预先把贴图加载
效耗时间还是将近4秒出头,
请问这有解吗??


小弟上傳目前最新的改善版本

刚刚尝试一下阿…用原本的json parse
以SampleChangeEquip这个范例来说
光是parse就耗时了2秒多,
用picojson 也差不多2秒,
rapidjson只要0.03秒阿…这实在坑爹阿下一个版本有没有考虑换下json parser阿

然后小小建议阿
原本的直接把档案读进来后转成char但是字串尾端会因为长度不对会有一些小问题
原本的:
des = (char)CCFileUtils::sharedFileUtils()->getFileData(jsonpath.c_str(), “r”, &size);
std::string load_str = std::string(des);
建议改成

unsigned char * pBytes = CCFileUtils::sharedFileUtils()->getFileData(jsonpath.c_str(), “r”, &size);
CCData *data = new CCData(pBytes, size);
std::string load_str = std::string((const char *)data->getBytes(), data->getSize() );

小弟把相关的json parser都换成rapid json 了跟原本的效率实测约快了133倍强烈建议下一个版本也把原本的parser换成rapidjson!!

强烈同意!!!从0.4的时候开始用,发现这个问题,以为1.0会好的,但是还是这样!! 等会儿马上去按照楼主的思路来一次,,看看是不是能够提升!请关注后续报道!

非常感谢您的建议,我们会测试比对效率问题

非常好的意见,我测试一下~

感谢意见~我们测试一下

求公布测试结果!实时关注!

小弟上传自己改过的code 直接把Cocosstudio资料夹盖掉然后把rapidjson放在跟cocos2dx 同层目录即可

我们看看~~

求尽快解决,我这几天也在分析效率问题,确实比较严重
原来以为是读取文件效率低,然后分析代码执行时间,发现是解析
尤其是解析动画的json时,耗时不是一般的长啊

求公布测试结果!实时关注! :11:

顶一个,希望能尽快优化一个版本

留个脚印。。

对比了楼主的解析跟原版的解析,发现原版的解析在读数据的时候总是通过函数来访问,各种压栈,出栈,时间当然慢。

我当初比对的还用其他的解析库但只有rapidjson有大幅度的成长小弟在这边更新一下新版的原本的那版​​有些bug 现在这版经过测试完全没问题

如果有可以提供复制控件的机制,那么一切就都不是问题了

不错感谢楼主,留个脚印,正在用

:14: 不错 特别回来感谢下,比以前效率提高非常多,很明显,感谢楼主~~