linux c不占用cpu的延时,测量一段代码占用的CPU时间,在Unix / Linux上的C中

clock()可以用作可靠的API来测量cpu执行代码片段所花费的时间吗?当使用times()/ clock()验证时,两者似乎都不能精确测量所花费的cpu时间.

首先,可以使用API​​ clock()/ times()来测量函数/代码片段的执行时间,如下例所示?有没有更好更可靠的选择?该机制适用于Linux,HP-UX,IBM-AIX和Sun Solaris,因为我们需要测量(和比较)所有这些平台上的一段代码的性能.

请建议.另外,如果我遗漏了任何微不足道的事,请告诉我.

bbb@m_001:/tmp/kk1$./perf_clock 102400

{clock(): S 0 E 0 D 0.0000000000}

bbb@m_001:/tmp/kk1$./perf_clock 204800

{clock(): S 0 E 10000 D 0.0100000000}

bbb@m_001:/tmp/kk1$cat perf_clock.c

#include

#include

#include

#include

void test_clock(char* sbuf,int* len){

clock_t start,end; int i=0;

start = clock();

while(i++ < 500) memset((char*)sbuf,*len);

end = clock();

printf("{clock(): S %10lu E %10lu D %15.10f}\n",start,end,(end-start)/(double) CLOCKS_PER_SEC);

}

int main(int argc,char* argv[])

{

int len=atoi(argv[1]);

char *sbuf=(char*)malloc(len);

test_clock(sbuf,&len);

free(sbuf); return 0;

}

结果似乎说memset()一个100 KB的块,500次,没有时间花.还是说它在几微秒内无法测量?

实际上,它不是memset()而是另一个函数[准备一个大小约1MB的巨大结构,mallocs这个结构的副本,Oracle DB选择并使用来自DB的数据填充这些结构]我试图测量.即使这显示0滴答,这也让我感到困惑.

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值