- 论坛徽章:
- 0
|
我在测试jsoncpp解析json格式字符串需要的时间,但是解析结果中出现为0的情况让不明白原因?
main.cpp文件:
const char* str0 = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"foo\",\"files\": \"bar\",\"numbers\":[{\"num\":1},{\"num\":2},{\"num\":3}]}";
const char* str = str0 ;
Json::Features feature;
const int TEST_TIMES = atoi(argv[1]) ;
long *take = new long[TEST_TIMES];
long sum=0;
fstream tmp;
string filename= string("test_"+string(argv[1])+".txt" ;
tmp.open(filename.c_str(),ios::app|ios:ut);
for ( int i=0; i<TEST_TIMES; ++i)
{
take[i]=-1;
{
Timedelt check(take[i]);
//usleep(500);
Json::Reader reader(feature);
Json::Value root ;
if( !reader.parse(str,root,true) ){
std::cout<<"parse error"<<endl;
return 0;
}
int num_size = root["numbers"].size();
std::cout<<i<<"->"<<endl;
for ( int j=0; j< num_size; ++j)
{
//root["numbers"][i]["num"].asInt();
std::cout<< "num: " << root["numbers"][j]["num"].asInt()<<endl;
}
}
sum += take[i];
tmp<<take[i]<<endl;
}
printf("it average take time %lu us\n",sum/TEST_TIMES);
tmp<<"average:"<<sum/TEST_TIMES ;
tmp.close();
delete []take ;
其中Timedelt类为:
class Timedelt {
public:
Timedelt( long &delt ):diff(delt){
gettimeofday(&start,NULL);
}
~Timedelt(){
gettimeofday(&end,NULL);
diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec;
}
private:
struct timeval start ,end ;
long &diff ;
};
测试30次时,有几次出现结果为0的情况,对这一情况不是很明了,可否帮我分析下原因或指导下方法。 |
|