程序运行时间测试 - 使用系统函数 getrusage 获取程序运行时间

Posted xuyaowen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序运行时间测试 - 使用系统函数 getrusage 获取程序运行时间相关的知识,希望对你有一定的参考价值。

https://github.com/yaowenxu/Workplace/blob/master/timer/getrusagetimer.c

关键结构体:

struct rusage 
             struct timeval ru_utime; /* user time used */
             struct timeval ru_stime; /* system time used */
             long ru_maxrss;          /* max resident set size */
             long ru_ixrss;           /* integral shared text memory size */
             long ru_idrss;           /* integral unshared data size */
             long ru_isrss;           /* integral unshared stack size */
             long ru_minflt;          /* page reclaims */
             long ru_majflt;          /* page faults */
             long ru_nswap;           /* swaps */
             long ru_inblock;         /* block input operations */
             long ru_oublock;         /* block output operations */
             long ru_msgsnd;          /* messages sent */
             long ru_msgrcv;          /* messages received */
             long ru_nsignals;        /* signals received */
             long ru_nvcsw;           /* voluntary context switches */
             long ru_nivcsw;          /* involuntary context switches */
     ;

程序:

/**
 * Author: Yaowen Xu
 * Github: https://github.com/yaowenxu
 * Organization: 北航系统结构研究所
 * Date: 2019-08-18 13:31:34
 * LastEditTime: 2019-08-18 13:51:26
 * Description: 使用系统 函数 getrusage 获取程序运行相关信息 
 *              此程序主要是关注与总时间和内核空间运行时间与用户
 *              空间运行时间,使用此函数可大致对程序运行时间计算;
 * 查看: 具体使用信息可以在控制台以 man getrusage 命令查看
 */
#include <stdio.h>
#include <math.h>
#include <sys/time.h>
#include <sys/resource.h>

int str2int(char* str)
    char *p = str;
    int sum = 0;
    while (*p != \\0)
    
        sum = sum*10 + (*p-0);
        p++;
    
    return sum;


int main(int argc, char* argv[])
    int def = 1000;
    if (argc == 2)
    
        def = str2int(argv[argc-1]);
    
    for (int i = 0; i < def ; i++)
    
        float tmp = sqrt(i);
    
    struct rusage usage;
    getrusage(RUSAGE_SELF, &usage);
    //getrusage(RUSAGE_CHILDREN, &usage);
    long user =  usage.ru_utime.tv_sec * 1000000 + usage.ru_utime.tv_usec; // user time used
    long sys = usage.ru_stime.tv_sec * 1e6 + usage.ru_stime.tv_usec; // sys time used
    
    printf("User: %ld us\\n", user); //  用户空间使用的时间
    printf("Sys: %ld us\\n", sys); //  内核空间使用的时间
    printf("Total: %ld us\\n", user+sys); // 总共使用的时钟
    return 0;

保持更新,如果对您有帮助请点击推荐!更多关于Linux 相关的知识,请关注 cnblogs.com/xuyaowen 

以上是关于程序运行时间测试 - 使用系统函数 getrusage 获取程序运行时间的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎样测试函数执行时间

pinctrl 和gpio 子系统实验

一个测试程序迭代的故事05

C语言程序运行时间测试

《代码整洁之道》总结——类,系统,测试,迭进

谁能帮我用C语言写一个测试选择排序性能(函数的运行时间)的程序,不胜感激!