程式撰寫好的時候,總是會想測試一下執行時間

以望都是在程式中加入開始時間及結束時間來進行判斷

但是在閱覽文章的時,發現 time 這個方便的指令

time 指令可以計算程序需要運行多長的時間,用於測試指令的性能很方便

可以拿來比較版本、優化前後的差異,就能使用 time 指令來確認執行時間

1
$ time command

Time 版本

bash 和 zsh 這兩個 Linux Shell 分別有自己的 time command 版本

可以使用 type 來確認 time 的版本

1
2
3
4
5
6
7
# bash
$ type time
> time is a shell keyword

# zsh
$ type time
> time is a reserved word

time 說明

bash 產生時間報告

zsh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# bash
$ time

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

# zsh
$ time

0.00s user 0.00s system 00% cpu 0.000 total

如果覺得 zsh 的顯示方式不容易看

可以修改輸出格式,可以參考 手冊

1
2
3
4
5
6
7
8
9
# zsh
$ TIMEFMT=$'\nCPU\t%P\nuser\t%*U\nsystem\t%*S\ntotal\t%*E'

$ time

CPU	 82%
user	 0.001
system   0.002
total	 0.004

測試指令

剛好比較一個剛寫好的 perl 解析 pcapgolang 解析 pcap

以下就是 golang 和 perl 版本的 time 測試報告

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# bash
time ./golang_parse_pcap            time perl main.pl -f dns.pcap

real    0m0.016s                    real    0m0.042s
user    0m0.009s                    user    0m0.032s
sys     0m0.007s                    sys     0m0.007s

# zsh
time ./golang_parse_pcap            time perl main.pl -f dns.pcap

CPU     103%                        CPU	    92%
user    0.010                       user    0.032
system  0.010                       system  0.007
total   0.019                       total   0.041

參考資料

  1. https://linuxize.com/post/linux-time-command/
  2. https://en.wikipedia.org/wiki/Time_(Unix)
  3. http://zsh.sourceforge.net/Doc/Release/Parameters.html