GIS与Climate
2022/07/22阅读:15主题:默认主题
Linux统计程序运行时间
预估程序的运行时间是很常见的一个需求。
在Linux下我们可以很方便的用一个命令来统计程序的运行时间:time。
如果我们需要测试test.sh这个脚本的执行时间,就可以用如下命令:
time bash test.sh
脚本的内容如下:
1 #!/bin/bash
2
3 for i in {01..10000};do
4 echo ${i}
5 done
就是简单的打印从01-10000之间的数字。我们用上面的time命令来看一下其运行时间:

time命令会在程序执行完毕之后自动计算程序的运行时间,然后做个统计,其时间有三个:
-
real:代表的是程序的总时间消耗,也就是从程序开始到结束的总时间; -
user:用户CPU时间; -
sys:系统CPU时间;
如果不想进一步了解,只要知道我们的程序总用时就是real的时间就行了。
如果想进一步了解,可以继续往下看。

用户CPU时间
用户CPU时间就是程序在用户态执行的时间,什么叫做用户态呢?我个人简单理解是一个程序的执行过程分为系统级别的操作和用户级别的操作,比如上面的程序,当我执行bash test.sh
的时候,就是用户态提交的,但是当bash去执行test.sh里面的代码的时候,需要执行echo ${i}
,这时候就要去调用内存、把输出打印到屏幕上,对内存的操作这些就需要Linux的内核来操作了,也就是系统态 (个人理解,可能有不对的地方,仅做参考。)
系统CPU时间
对应上面的话,系统CPU时间就可以认为是内核进行一些列的操作过程所用的时间了。
小技巧
shell中的空语句:
:
就像Python中的pass一样,在shell中可以用":"来进行占位,什么都不做。
关于用户态和内核态可以详细去看参考【2】。
参考
【1】https://www.runoob.com/linux/linux-comm-time.html
【2】https://www.cnblogs.com/maxigang/p/9041080.html
【3】https://www.cnblogs.com/sea-stream/p/11387246.html
【4】https://www.cnblogs.com/sea-stream/p/11387246.html
作者介绍
GIS与Climate
公众号:GIS与Climate,欢迎关注