Linux 中的计时 --转自IBM china
2007-09-17 10:33
211 查看
级别: 初级 车皓阳 (grandiose11@msn.com)中科院软件所 2003 年 10 月 01 日 本文描述了Linux系统中一些与计时相关的问题和解决方法。因为在学习和研究的过程中我们经常需要统计程序或程序段的耗时,评估它们的性能好坏。因而这些问题对于我们来说,经常会遇到。掌握多种计时方法对于开发人员或科研工作者来说都是必须掌握的一项技能。本文解决了在Linux计时当中经常会遇到的一些技术问题,相信会对他人的工作有所帮助。 实际上,可能还会有其它一些方法可以完成本文讨论的任务。我仅讨论了我所使用的方法,这并不意味着除此之外的其它方法就很差劲,只不过对我来说这些方法相对简单有效而已。 Linux中的时间 在Linux系统中,时间扮演着一个非常重要的角色,它几乎无处不在。开机时,会显示如下的信息:
实际上,linux系统有着自己的计时器时钟。可以实验一下,分别执行date和/sbin/clock(或sbin/hwclock)命令,得到的时间是不同的。
在用户空间中可以使用C语言函数gettimeofday 得到时间,它的调用格式是:
在Linux的Shell下,我们经常也使用Shell内置的time命令和GNU版的time命令来测试程序运行的时间。 内置的time提供的参数选项比较少,而GNU的time则提供了丰富的参数选项,包括指定输出文件等功能。
nohup命令可以保证进程在退出系统之后仍能运行,这是它的常规用法。我们也可以这样使用nohup:
如果要定制自己的设备驱动程序,可能就会用到内核里的计时功能。Linux内核空间中的计时与用户空间的计时不太相同。在内核空间里,有一个全局变量Jiffies维护着当前的时间。与系统时钟有关的调用有(新的定时服务):
Jiffies的计时精度是百分之一秒,如果在内核中需要更为精确的计时,就需要用到time_calls.h中的函数,它们可用于高精度的时间计算。
有的时候,我们需要较为精确地得出被测目标的运行时间,这时一般需要多次运行取均值以消除误差。
在Linux Shell下,如果统计次数较少,则可以:
实际上,我们还可以使用诸如Perl、Python等多种语言在Linux系统中进行计时。选择何种工具或语言进行计时,这与被测程序或程序段的类型以及它们的编写语言相关。综合考虑精度、运行时间、运行次数等要求,才能合理可靠地得出程序的运行时间。 参考资料 请阅读 RunTime:High-performance programming techniques on Linux and Windows 2000,里面有关于Linux和Windows平台下计时性能开销的一些讨论。 请参阅网站 中文Linux知识库。 有关gexpr的信息,请参阅网站 Gexpr。 Matt Welsh & Lar Kaufman,Running Linux,USA:O'Reilly & Associates,1995 在 developerWorks Linux 专区中寻找更多 用于 Linux 开发人员的参考资料。 linux中的man page也是重要的信息来源。 关于作者
|
相关文章推荐
- win与Linux中的精确计时
- CoreOS Linux available in China
- Linux用户态程序计时方式详解
- IBM开发社区上关于Linux多线程编程的文章
- Ubuntu 16.04 LTS 现已正式支持 IBM LinuxONE 与 z Systems
- Linux 中的计时
- IBM的LPI复习资料之LPI101-Topic102:Linux安装和包管理(2)启动管理器GRUB,GRUB2,LILO
- IBM的LPI复习资料之LPI101-Topic102:Linux安装和包管理(3)管理动态链接库(查找和加载程序需要的动态链接库文件)
- 【转】基于ATMEL AT91RM9200的嵌入式Linux移植笔记(1) http://linux.chinaunix.net/bbs/thread-985578-1-1.html
- IBM宣布近期将增加对Linux的投资
- Windows与Linux下系统计时函数整理总结
- linux下的文件系统介绍[来自IBM]
- Linux 内核的同步机制,第 2 部分(来自IBM)
- 安装和使用 IBM WebSphere MQ for Linux
- Linux - nmon - IBM系统监控工具nmon命令详解(2)
- IBM:Linux 必须商业化
- Linux音频编程指南(转自http://www.ibm.com/developerworks/cn/linux/l-audio/index.html#author 作者 肖文鹏)
- Linux用户态程序计时方式详解
- http://www.ibm.com/developerworks/cn/linux/theme/kernel/index.html
- Linux & Windows 计时函数