You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
2.2 KiB

6 years ago
# **time**
6 years ago
6 years ago
## 实例
7 years ago
6 years ago
当测试一个程序或比较不同算法时执行时间是非常重要的一个好的算法应该是用时最短的。所有类UNIX系统都包含time命令使用这个命令可以统计时间消耗。例如time command
7 years ago
6 years ago
```sh
7 years ago
real 0m0.009s
user 0m0.002s
sys 0m0.007s
6 years ago
输出的信息分别显示了该命令所花费的real时间、user时间和sys时间
7 years ago
5 years ago
1real时间是指挂钟时间也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片和进程被阻塞时所花费的时间
2user时间是指进程花费在用户模式中的CPU时间这是唯一真正用于执行进程所花费的时间其他进程和花费阻塞状态中的时间没有计算在内
3sys时间是指花费在内核模式中的CPU时间代表在内核中执系统调用所花费的时间这也是真正由进程使用的CPU时间
7 years ago
```
5 years ago
shell内建也有一个time命令当运行time时候是调用的系统内建命令应为系统内建的功能有限所以需要时间其他功能需要使用time命令可执行二进制文件`/usr/bin/time`
7 years ago
6 years ago
```sh
/usr/bin/time -o outfile.txt ls # 使用`-o`选项将执行时间写入到文件中
/usr/bin/time -a -o outfile.txt ls # 使用`-a`选项追加信息
/usr/bin/time -f "time: %U" ls # 使用`-f`选项格式化时间输出
```
`-f`选项后的参数:
| 参数 | 描述 |
| :------: | :------: |
| %E | real时间显示格式为[小时:]分钟:秒 |
| %U | user时间 |
| %S | sys时间 |
| %C | 进行计时的命令名称和命令行参数 |
| %D | 进程非共享数据区域以KB为单位 |
| %x | 命令退出状态 |
| %k | 进程接收到的信号数量 |
| %Z | 进程被交换出主存的次数 |
| %Z | 系统的页面大小,这是一个系统常量,不用系统中常量值也不同 |
| %P | 进程所获取的CPU时间百分百这个值等于user+system时间除以总共的运行时间 |
| %K | 进程的平均总内存使用量data+stack+text单位是KB |
| %w | 进程主动进行上下文切换的次数例如等待I/O操作完成 |
| %c | 进程被迫进行上下文切换的次数(由于时间片到期) |