在 Linux 下統計可執行程式的執行耗時,你可以使用 time
命令。它能夠顯示程式的使用者時間、系統時間和總耗時等詳細資訊。以下是 time
命令的基本使用方式:
time ./your_program
其中 your_program
是你要執行的可執行檔案。
輸出解釋:
real 0m2.123s # 實際的時間(從程式開始到結束的總時間,包含了等待時間)
user 0m1.456s # 程式在使用者態執行的時間
sys 0m0.567s # 程式在核心態執行的時間
real
:從程式開始執行到結束的真實時間(包括等待時間,如I/O操作等待)。user
:CPU執行使用者程式碼的時間(即程式本身消耗的時間)。sys
:CPU在作業系統核心中執行的時間(即系統呼叫消耗的時間,如檔案讀寫等)。
高階用法:
-
儲存結果到檔案:你可以將耗時結果重定向到檔案:
/usr/bin/time -o output.txt ./your_program
這將把耗時資訊儲存到
output.txt
檔案中。 -
自定義格式:你還可以透過
-f
選項自定義輸出格式。例如:/usr/bin/time -f "\nreal_time: %E\nuser_time: %U\nsys_time: %S" ./your_program
%E
:實際耗時(real time)。%U
:使用者態耗時。%S
:核心態耗時。
-
測量命令的平均耗時:你可以使用迴圈執行程式多次,然後計算平均值:
for i in {1..10}; do time ./your_program; done
這種方法適合統計程式的耗時並可以用於效能分析。
如果系統中沒有 time
命令,可以透過以下幾種方式來統計程式的執行時間:
1. 使用 date
命令計算時間差
date
命令可以獲取當前的時間戳,透過記錄程式開始和結束的時間,計算出執行的總耗時。
start=$(date +%s) # 獲取開始時間的時間戳(單位為秒)
./your_program # 執行你的程式
end=$(date +%s) # 獲取結束時間的時間戳
echo "Runtime: $((end - start)) seconds" # 計算並輸出耗時
如果需要更高的精度(以毫秒為單位),可以使用:
start=$(date +%s%3N) # 獲取開始時間的時間戳(單位為毫秒)
./your_program # 執行你的程式
end=$(date +%s%3N) # 獲取結束時間的時間戳
echo "Runtime: $((end - start)) milliseconds" # 計算並輸出耗時
2. 使用 bash
的內建 SECONDS
變數
Bash 提供了一個名為 SECONDS
的內建變數,程式執行時會自動記錄從指令碼開始執行到當前時間的秒數。
SECONDS=0 # 初始化 SECONDS 變數
./your_program # 執行你的程式
echo "Runtime: $SECONDS seconds" # 輸出耗時
3. 使用 perf
工具
如果你有 perf
工具安裝,可以用它來統計程式的執行耗時及其他效能指標。perf
是一個強大的 Linux 效能分析工具。
perf stat ./your_program
perf
會顯示總耗時、CPU利用率等多種資訊。