void performanceTest(ZF_IN const ZFJsonItem &jsonItem) { zfindex toDataTimes = 10000; ZFCoreStatistic::invokeTimeAccurateLogBegin(zfText("ZFJsonPerformance_test_toData")); for(zfindex i = 0; i < toDataTimes; ++i) { zfstring tmp; ZFJsonToOutput(ZFOutputCallbackForString(tmp), jsonItem); } ZFCoreStatistic::invokeTimeAccurateLogEnd(zfText("ZFJsonPerformance_test_toData")); zfindex fromDataTimes = toDataTimes; zfstring jsonString; ZFJsonToOutput(ZFOutputCallbackForString(jsonString), jsonItem); ZFCoreStatistic::invokeTimeAccurateLogBegin(zfText("ZFJsonPerformance_test_fromData")); for(zfindex i = 0; i < fromDataTimes; ++i) { ZFJsonFromInput(ZFInputCallbackForBuffer(jsonString.cString())); } ZFCoreStatistic::invokeTimeAccurateLogEnd(zfText("ZFJsonPerformance_test_fromData")); ZFJsonItem jsonItemNew = ZFJsonFromInput(ZFInputCallbackForBuffer(jsonString.cString())); this->testCaseOutputSeparator(); ZFTimeValue toDataUsedTime = ZFCoreStatistic::invokeTimeAccurateGetTotalTime(zfText("ZFJsonPerformance_test_toData")); this->testCaseOutput(zfText("serialize to data %zi times cost %s seconds"), toDataTimes, ZFTimeValueToStringFriendly(toDataUsedTime).cString()); ZFTimeValue fromDataUsedTime = ZFCoreStatistic::invokeTimeAccurateGetTotalTime(zfText("ZFJsonPerformance_test_fromData")); this->testCaseOutput(zfText("serialize from data %zi times cost %s seconds"), fromDataTimes, ZFTimeValueToStringFriendly(fromDataUsedTime).cString()); #if 0 this->testCaseOutputSeparator(); this->testCaseOutput(zfText("content: %s"), jsonString.cString()); this->testCaseOutput(zfText("newly: %s"), ZFJsonToString(jsonItemNew).cString()); #endif ZFCoreStatistic::invokeTimeAccurateRemove(zfText("ZFJsonPerformance_test_toData")); ZFCoreStatistic::invokeTimeAccurateRemove(zfText("ZFJsonPerformance_test_fromData")); }
void ZFJsonPrint(ZF_IN const ZFSerializableData &serializableData, ZF_IN_OPT const ZFOutputCallback &outputCallback /* = ZFOutputCallbackDefault */, ZF_IN_OPT const ZFJsonOutputFlags &flags /* = ZFJsonOutputFlagsDefault */) { ZFJsonItem jsonObject = ZFJsonFromSerializableData(serializableData); if(jsonObject.jsonType() != ZFJsonType::e_JsonNull) { ZFJsonToOutput(outputCallback, jsonObject, flags); outputCallback.execute(zfText("\n")); } }