博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux获取进程执行时间
阅读量:6487 次
发布时间:2019-06-23

本文共 1700 字,大约阅读时间需要 5 分钟。

1、前言

      测试一个程序的执行时间,时间包括用户CPU时间、系统CPU时间、时钟时间。之前获取之前时间都是在程序的main函数用time函数实现,这个只能粗略的计算程序的执行时间,不能准确的获取其他时间。在看《APUE》时,书中有关程序时间测试程序,非常正规,提供这三个时间。如是,上网搜了一下,进行总结一下。

2、获取方法

  有两种方法可以获取,第一种是用time命令,time 进程。第二种是通过在程序中进行记录,首先利用sysconf函数获取时钟滴答数,再用times获取tms结构。

查看times函数,man 2 tms,得到tms结构定义和times函数声明如下:

struct tms {       clock_t tms_utime;  /* user time */       clock_t tms_stime;  /* system time */       clock_t tms_cutime; /* user time of children */       clock_t tms_cstime; /* system time of children */  };
#include 
clock_t times(struct tms *buf);

注意:此处计算的时间是时钟滴答数,需要除以系统时钟滴答数,得出实际的秒数。

3、测试例子:

测试程序如下:

1 #include 
2 #include
3 #include
4 #include
5 6 #define BUFFER_SIZE 4 * 1024 7 8 int main() 9 { 10 int sc_clk_tck; 11 sc_clk_tck = sysconf(_SC_CLK_TCK); 12 13 struct tms begin_tms, end_tms; 14 clock_t begin, end; 15 system("date"); 16 begin = times(&begin_tms); 17 sleep(2); 18 end = times(&end_tms); 19 20 printf("real time: %lf\n", (end - begin) / (double)sc_clk_tck); 21 printf("user time: %lf\n", 22 (end_tms.tms_utime - begin_tms.tms_utime) / (double)sc_clk_tck); 23 printf("sys time: %lf\n", 24 (end_tms.tms_stime - begin_tms.tms_stime) / (double)sc_clk_tck); 25 printf("child user time: %lf\n", 26 (end_tms.tms_cutime - begin_tms.tms_cutime) / (double)sc_clk_tck); 27 printf("child sys time: %lf\n", 28 (end_tms.tms_cstime - begin_tms.tms_cstime) / (double)sc_clk_tck); 29 return 0; 30 }

测试结果如下所示:

采用time命令,测试结果如下所示:

4、参考网址

转载于:https://www.cnblogs.com/Anker/p/3416288.html

你可能感兴趣的文章
Java文件读取 中文乱码
查看>>
【极品手机推荐】安卓3G运存16G内存,相机1300+500,三星高画质显示J7109|J7108
查看>>
《乐在C语言》一2.2 数据类型
查看>>
《科学+ 预见人工智能》——物理学家的管理方式
查看>>
Ceph分布式存储学习指南1.10 iRODS
查看>>
Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包
查看>>
《51单片机应用开发从入门到精通》——2.6 中断控制功能的作用
查看>>
《 Python树莓派编程》——第1章 树莓派简介 第1.1 树莓派的历史
查看>>
Sed&awk笔记之awk篇:快速了解Awk(三)
查看>>
C语言及程序设计初步例程-37 循环嵌套
查看>>
对Xcode菜单选项的详细探索
查看>>
tinyhttpd源码详解
查看>>
String类的intern()
查看>>
主动中断请求
查看>>
PgSQL · 案例分享 · PostgreSQL+HybridDB解决企业TP+AP混合需求
查看>>
C++实践参考——OOP版电子词典
查看>>
Node服务一键离线部署
查看>>
第二节:思维导图学习Shell脚本编程之命令之美
查看>>
android的消息处理机制(图文+源码分析)—Looper/Handler/Message[转]
查看>>
Python实现设置终端显示颜色、粗体、下划线等效果
查看>>