【gettimeofday】测试程序运行时间

转自:https://blog.csdn.net/u013806583/article/details/58127067

普通的C程序已经验证,内核模块的暂时还没有验证

在测试程序时,往往需要了解程序执行所需的时间,在C语言中可以使用函数gettimeofday来得到时间。

来不及解释了,直接上例子。

对于普通的C程序:

使用 gettimeofday() 函数

#include<stdio.h>
#include<sys/time.h> //注意引用这个头文件
#include<unistd.h>

int delay(int time)
{
//这里用来表示你自己要运行的程序
}

int main()
{
    //定义两个结构体,来记录开始和结束时间
        struct  timeval start;
        struct  timeval end;
        //记录两个时间差
        unsigned  long diff;

        //第一次获取时间,即表示开始记时
        gettimeofday(&start,NULL);

        //运行自己的程序
        delay(10);

        //第二次获取时间,即表示结束记时
        gettimeofday(&end,NULL);

        //计算时间差,并打印
        diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec;
        printf(“thedifference is %ld\n”,diff);

        return 0;
}

哈哈,例子结束,是不是很简单。当然这是抄的。。。。。。。

对于内核模块的C程序

虽然同是C程序,但是写内核模块就有很大的不同哦。 
使用 do_gettimeofday() 函数,同时,头文件也变了哦

同样的,直接上例子。

#include<stdio.h>

//注意引用这个头文件
#include<linux/time.h> 

#include<unistd.h>

int delay(int time)
{
//这里用来表示你自己要运行的程序
}

int main()
{
    //定义两个结构体,来记录开始和结束时间
        struct  timeval start;
        struct  timeval end;
        //记录两个时间差
        unsigned  long diff;

        //第一次获取时间,即表示开始记时
        do_gettimeofday(&start,NULL);

        //运行自己的程序
        delay(10);

        //第二次获取时间,即表示结束记时
        do_gettimeofday(&end,NULL);

        //计算时间差,并打印
        diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec;
        printf(“thedifference is %ld\n”,diff);

        return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您的问题不够清晰,我不确定您想了解什么。如果您是想了解 Linux IO 性能测试以及使用 gettimeofday 和 read 函数进行测试的方法,我可以简单地介绍一下。 Linux IO 性能测试通常使用工具例如 dd、hdparm、fio 和 iozone 等。其中,dd 和 hdparm 是最常用的工具之一。使用 gettimeofday 函数可以获取当前时间,用于计算 IO 操作的时间。使用 read 函数可以读取文件或设备的数据。 以下是一个示例程序,演示如何使用 gettimeofday 和 read 函数进行 IO 性能测试: ``` #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <fcntl.h> #include <unistd.h> #define BUF_SIZE 1024 int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "Usage: %s <file>\n", argv[0]); exit(EXIT_FAILURE); } int fd = open(argv[1], O_RDONLY); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } char buf[BUF_SIZE]; struct timeval start, end; gettimeofday(&start, NULL); while (read(fd, buf, BUF_SIZE) > 0) { // do nothing } gettimeofday(&end, NULL); double elapsed = (end.tv_sec - start.tv_sec) + (end.tv_usec - start.tv_usec) / 1000000.0; printf("Elapsed time: %.3f seconds\n", elapsed); close(fd); return 0; } ``` 这个程序用于读取一个文件,然后计算读取这个文件所花费的时间。可以在命令行运行,例如: ``` $ ./a.out test.txt Elapsed time: 0.003 seconds ``` 注意,这个示例程序没有进行任何的 IO 性能测试。如果您想进行更为详细和准确的测试,建议使用一些专业的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值