Linux下用time命令测程序运行时间
时间:2025-06-30 11:15:05 136浏览 收藏
在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是文章学习者,那么本文《Linux中使用time命令统计程序运行时间》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!
Linux time命令
在 Linux 系统中,time 命令的主要功能是测量指定命令执行过程中所消耗的时间以及系统资源的使用情况。
它能够显示如 CPU 使用时间、内存占用、输入输出操作等相关信息。需要注意的是,并非所有信息都能在 Linux 中正确呈现。这主要是由于 Linux 内部资源分配机制与 time 命令默认获取方式存在差异,导致部分数据无法被读取。
语法格式
time [选项] 命令 [参数]
常用选项说明:
- -o 或 --output=文件名:将统计结果输出到指定文件。若文件已存在,则原内容会被覆盖。
- -a 或 --append:配合 -o 使用时,将结果追加写入文件末尾,而非覆盖原有内容。
- -f 格式 或 --format=格式:自定义结果显示格式。未指定时使用系统默认格式。可通过设置环境变量 TIME 来永久更改格式模板。
time 命令可展示四大类资源信息:
- 时间相关
- 内存使用
- 输入输出
- 命令信息
具体说明如下:
1、时间资源
E 整个命令执行耗时,格式为:[小时]:分钟:秒。注意此值不等于实际 CPU 运行时间。
e 命令执行总时间,单位为秒。同样不是真实 CPU 时间。
S 命令在内核态运行时间,单位秒。
U 命令在用户态运行时间,单位秒。
P CPU 占用率,即(内核态+用户态)时间总和除以总执行时间得出的百分比。
2、内存资源
M 执行期间物理内存使用的最大值,单位 KB
t 物理内存平均使用量,单位 KB
K 程序占用内存总量(堆栈+数据段+代码段)平均值,单位 KB
D 独占数据区平均大小,单位 KB
p 独占堆栈区平均大小,单位 KB
X 共享代码段平均大小,单位 KB
Z 系统页面大小,单位字节。同一系统中该值固定不变
3、IO资源
F 主缺页中断次数。指某内存页已被交换到交换分区并分配给其他进程,需要从交换分区重新读取的情况。
R 次缺页中断次数。表示内存页虽被换出但尚未分配给其他进程,此时内容未改变,无需从交换分区读取。
W 被换出到交换分区的次数
c 被强制中断(如CPU时间片用完)的次数
w 自愿中断次数(如等待磁盘读写完成)
I 输入文件数量
O 输出文件数量
r 接收的Socket消息数
s 发送的Socket消息数
k 接收到的信号数量
4、命令相关信息
C 执行命令及其参数详情
x 结束状态码 (Exit Status )
-p or --portability:自动设定显示格式为:
real %e user %Usys %S,确保符合 POSIX 标准。
-v or --verbose:列出所有可用资源信息,采用自然语言描述,适合刚接触该命令的用户。
使用示例
1. # time date
2. Sun Mar 26 22:45:34 GMT-8 2006
3.
4. real 0m0.136s
5. user 0m0.010s
6. sys 0m0.070s
7. #
以上示例中,执行了 "time date" 命令(见第1行)。
系统先运行 date 命令,其输出结果如第2行所示。
第4至6行展示了时间统计信息:"real" 表示实际经过时间,"user" 是用户态CPU时间,"sys" 为内核态CPU时间。
这些时间值的显示格式统一为 MMmNN[.FFF]s。
使用以下命令:
time -v ps -aux
可以同时查看 ps -aux 的执行结果及其资源消耗情况,如下所示:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
......
root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux
Command being timed: "ps -aux"
User time (seconds): 0.05
System time (seconds): 0.06
Percent of CPU this job got: 68%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 238
Minor (reclaiming a frame) page faults: 46
Voluntary context switches: 0
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
好了,本文到此结束,带大家了解了《Linux下用time命令测程序运行时间》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
404 收藏
-
273 收藏
-
215 收藏
-
355 收藏
-
294 收藏
-
157 收藏
-
156 收藏
-
263 收藏
-
365 收藏
-
213 收藏
-
179 收藏
-
425 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习