📜  如何在 bash 上进行速度测试 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:52:13.935000             🧑  作者: Mango

如何在 Bash 上进行速度测试

在开发中,我们经常需要评估代码的性能。在 Bash 中进行速度测试也是非常容易的,下面介绍一些方法。

时间命令

可以使用 time 命令来测量命令或脚本的运行时间。例如,我们想测量 sleep 1 命令的执行时间,可以这样做:

time sleep 1

运行结果类似这样:

real    0m1.004s
user    0m0.000s
sys     0m0.004s

其中:

  • real 代表实际运行时间,包括进程的创建和销毁时间。
  • user 代表 CPU 执行时间,不包括等待 I/O 的时间。
  • sys 代表系统 CPU 时间,包括内核代码的执行时间。
Bash 内置的时间

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

其中:

  • usersystem 分别代表用户和系统 CPU 时间,单位为秒。
  • elapsed 代表实际运行时间,单位为秒。
  • CPU 代表 CPU 使用率,百分比。
  • maxresident 代表程序最大常驻内存,单位为 KB。
  • pagefaults 代表进程缺页次数。
  • swaps 代表进程交换页次数。
GNU time 命令

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 上进行速度测试的方法,根据需求选择不同的命令即可。