linux:统计耗时

linux:统计耗时,第1张

linux下的方法:

(1)使用命令time:

[root@localhost-120 xgf]# time ./standard

counter = 1000000

real0m0.006s

user0m0.000s

sys 0m0.000s

time命令对秒(s)级别的很精确,而对毫秒级的误差比价大。我们可以通过sleep/usleep函数来进行测试。sleep(0.1)或者usleep(100)都是表示休眠100ms,而测试结果都是:

real0m0.002s

user0m0.000s

sys 0m0.000s

(2)通过difftime函数:

double difftime(time_t time1, time_t time0)计算time1和time0之间的秒数。测试程序如下:

#include <stdio.h>

#include <time.h>

#define MAX 1000

int do_work()

{

int counter = 0 /* the counter */

int i, j /* the loop variable */

/* accumulate the counter */

for(i = 0i <MAXi++)

for(j = 0j <MAXj++)

counter++

/* return the counter's value */

return counter

}

int main()

{

time_t start, end

int val

start = time(NULL)

do_work()

end = time(NULL)

printf("val = %f/n", difftime(end, start))

return 0

}

1.332s。stat函数是用来获取文件的各种属性的一个linux下的常用API函数。stat函数耗时时间长是1.332s。函数,数学术语。其定义通常分为传统定义和近代定义,函数的两个定义本质是相同的。

/*这是一个简单的用户程序与驱动交互的例程*/

void main(void)  

{  

   int testdev 

   int i 

   char buf[10] 

  /* 这里是用的open系统调用,是linux内核接口函数,不是库函数,返回fd,详细请google ,这个open最终会调用驱动中的open函数(代码流程是这样的open()->sys_open()->filp_open()->dentry_open()->驱动open)*/

    testdev = open ("/dev/test",O_RDWR)  

    if(testdev == -1)  

    {  

        printf("Cann't open file...../n")  

        exit(0)  

    }  

    printf("buf = 0x%x/n",buf)  

/* 下面的read write 和ioctl是用户程序和内核驱动的最直接的交互方式 */

    read(testdev,buf,10) 

    write(testdev,buf,1)  

    led_ctl.port='G'  

    led_ctl.bit=5  

    led_ctl.value=0  

    ioctl(testdev,GPIO_IO_SET_GPG,&led_ctl)  

    printf("%s",buf)  

    pause()  

    close(testdev)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7359851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存