程序运行时间测试 - 使用系统函数 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

原文地址:https://www.cnblogs.com/xuyaowen/p/c-sys-getrusage.html

时间: 2024-10-09 08:53:50

程序运行时间测试 - 使用系统函数 getrusage 获取程序运行时间的相关文章

unicode string和ansi string的转换函数及获取程序运行路径的代码

#pragma once#include <string> namespace stds { class tool { public: std::string ws2s(const std::wstring& ws) { std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C"; setlocale(LC_ALL, "chs"); const wchar_t* _Sou

C++/C 获取系统时间,获取程序执行时间

个人觉得第二种还是比较实用的,而且也是最常用的~ 不过当计算算法耗时的时候,不要忘记second,不能只要用Milliseconds来减,不然后出现负值,若是算法耗时太长就得用minutes啦.再不然,就hours…… //方案— 优点:仅使用C标准库:缺点:只能精确到秒级 #include <time.h> #include <stdio.h> int main( void ) {     time_t t = time(0);     char tmp[64];     str

手动设置系统默认程序版本(可以替换系统自带同名程序)

在root下一切正常,在当前用户下就出现了问题.如下所示: [email protected]:/usr/local$ java -version 程序“java”已包含在下列软件包中: * gcj-4.4-jre-headless  * openjdk-6-jre-headless  * cacao  * gij-4.3  * jamvm 请尝试:sudo apt-get install <选定的软件包> 解决方法:(手动设置系统默认JDK) 在终端中依次输入命令: jdk1.6.0_26

ios程序发布测试打包

ios程序发布测试打包备忘 1. 获取测试机UDID 手机连接电脑,打开iTunes-摘要-点击序列号,设备概要界面显示设备udid-反键-拷贝 2. 添加设备 取得UDID后,进入开发者中心-iOS Provisioning Portal-Devices-Add Devices,一个地方填名称,一个地方填你从Tester那里拿到的udid 3. 生成ad hoc证书 开发者中心-Provisioning Portal-Provisioning-Distribution-New Profile,

微信小程序云开发之云函数创建

云函数 云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写.一键上传部署即可运行后端代码. 小程序内提供了专门用于云函数调用的 API.开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid.openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid). 1. 云函数创建 根据官网提示,创建一个云函数,命名为 add, 功能是将 a , b 两数相加,步骤如下: 在文件夹 cloud

【转】c++ 获取程序运行时间

转自:http://blog.csdn.net/ghevinn/article/details/22800059 DWORD start_time=GetTickCount(); {...} DWORD end_time=GetTickCount(); DWORD Subtime = (end_time-start_time); int k = 0; 如何获取代码运行时间 在调试中,经常需要计算某一段代码的执行时间,下面给出两种常用的方式: 第一种:使用GetTickCount函数 #inclu

python3打印当前时间和获取程序运行时间

学习使用time模块和datetime模块. 通常我们想让程序等待几秒钟,再继续向下运行,time模块的sleep()方法是一个很好的选择.但是想通过time模块打印系统的当前时间,则比较麻烦.如下: from time import strftime, localtime # 打印当前时间 def printTime(): print(strftime("%Y-%m-%d %H:%M:%S", localtime())) return 需要调用两个函数. 通过time模块获取程序运行

32位程序在64位系统上获取系统安装时间(要使用KEY_WOW64_64KEY标记)

众所周知,取系统的安装时间可取注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的子项InstallDate,此值是个DWORD类型的UnixStamp.  但是在64位系统上有所不同(仅测试了win7.win8),默认情况下32程序在64位机器上访问的是下面这个地址HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion

微信+WeTest:小程序云端测试系统上线

日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测试平台,由WeTest提供基础支持,下载"微信开发者工具"即可使用. 小程序测试报告示例:  一. 云真机测试 Beta 为了方便广大开发者检测小程序程序缺陷.评估小程序产品质量,微信提供了免费的云真机测试环境以及一整套测试方案.在小程序交付到真实用户手中使用之前,你可以将小程序分发到云真