📅  最后修改于: 2023-12-03 14:52:13.935000             🧑  作者: Mango
在开发中,我们经常需要评估代码的性能。在 Bash 中进行速度测试也是非常容易的,下面介绍一些方法。
可以使用 time
命令来测量命令或脚本的运行时间。例如,我们想测量 sleep 1
命令的执行时间,可以这样做:
time sleep 1
运行结果类似这样:
real 0m1.004s
user 0m0.000s
sys 0m0.004s
其中:
real
代表实际运行时间,包括进程的创建和销毁时间。user
代表 CPU 执行时间,不包括等待 I/O 的时间。sys
代表系统 CPU 时间,包括内核代码的执行时间。Bash 还有一个内置的 time
命令,可以用来分析命令或脚本的资源占用情况,比如 CPU 时间、磁盘 I/O、内存使用等。使用方法与 time
命令类似,在命令或脚本前加入 time
就可以了。例如:
time sleep 1
运行结果类似这样:
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 942maxresident)k
0inputs+0outputs (0major+62minor)pagefaults 0swaps
其中:
user
和 system
分别代表用户和系统 CPU 时间,单位为秒。elapsed
代表实际运行时间,单位为秒。CPU
代表 CPU 使用率,百分比。maxresident
代表程序最大常驻内存,单位为 KB。pagefaults
代表进程缺页次数。swaps
代表进程交换页次数。GNU time 命令比 Bash 内置的 time
命令功能更强大,支持更多的统计信息和输出格式。如果在系统中没有安装此命令,可以使用包管理器进行安装。比如在 Ubuntu 中,可以使用以下命令进行安装:
sudo apt-get install time
使用方法与 Bash 内置的 time
命令类似。例如:
/usr/bin/time -v sleep 1
运行结果类似这样:
Command being timed: "sleep 1"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.00
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): 942
Page faults (major+minor): 0+62
Swaps: 0
Input/output operations: 0
Sockets: 0/0
Full context switches: 0
Voluntary context switches: 1
Involved filesystem I/O: read=0/write=0/other=0
其中的信息与 Bash 内置的 time
命令类似,只是输出格式略有不同。注意,/usr/bin/time
才是 GNU time 命令的路径,在使用时需要加上路径名。
以上就是在 Bash 上进行速度测试的方法,根据需求选择不同的命令即可。