计算一段代码耗时的三个函数

最近在做数据库性能优化,第一次接手这种活儿,目前还是摸着石头过河的状态,准备第一步先检测目前数据库操作的性能,暂时以时间消耗为指标,遂写了一组计算一段代码耗时的函数。

time_watch.c:

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>

int start_watch(struct timeval *pstart)
{
    int ret = 0;
    ret = gettimeofday(pstart,NULL);
    if (ret != 0) {
        perror("gettimeofday at start");
        return -1;
    }
    return 0;
}

int end_watch(struct timeval *pend)
{
    int ret = 0;
    ret = gettimeofday(pend, NULL);
    if (ret != 0) {
        perror("gettimeofday at end");
        return -1;
    }
    return 0;
}

int show_watch_result(struct timeval *pstart, struct timeval *pend)
{
    float time_used;
    time_used = 1000000*(pend->tv_sec - pstart->tv_sec)+ pend->tv_usec - pstart->tv_usec;
    time_used /= 1000000;
    printf("totally time used:%fs\n", time_used);
    return 0;
}

//使用举例
int main()
{
    struct timeval a1, a2;
    start_watch(&a1);

    //这里就是即将检测代码地方,这里用阻塞2s来代替
    sleep(2);

    end_watch(&a2);
    show_watch_result(&a1, &a2);

    return 0;
}

Compile command:
$ gcc -g -Wall time_watch.c

Input:
$ ./a.exe

Output:
totally time used:2.000114s

 

你可能感兴趣的:(计算一段代码耗时的三个函数)