免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1653 | 回复: 0
打印 上一主题 下一主题

[学习] linux测量函数运行时间,单位为us,为什么有时候出现时间为0的情况 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-25 12:44 |只看该作者 |倒序浏览
我在测试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的情况,对这一情况不是很明了,可否帮我分析下原因或指导下方法。         
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP