4-2-7 time 執行時間變數 預設變數 time 與內建指令 time
是息息相關的。本變數是用來定義內建指令 time
的輸出格式及設定自動顯示 time
訊息的基本時間。所以實際上此變數有兩組設定的資料,一個是時間,另一個是輸出格式。設定的組合如下所示:
設定時間 set time = 時間
設定輸出格式 set time = ( "輸出格式" )
完全設定 set time = ( 時間 "輸出格式" )
時間的單位一般以秒計算之,假定你設定 CPU time 為 3
秒,則你每個執行時間超過 3
秒的指令,便會自動顯示出執行的時間狀態,而不需用 time
指令來執行命令。
在輸出格式上,總共有十個符號,以下便是每個符號所代表的意義:
%D |
佔用系統記憶體的 unshared
平均值(單位:千位元) |
%E |
實際執行的消耗時間,一般又稱為 wall clock
time(分:秒) |
%F |
分頁錯誤(page faults)數量。在此我們為你簡單地介紹分頁錯誤的產生。在
UNIX 作業系統中,記憶體的架構是以頁 page)為程序移轉的處理單位。所以一個程式或指令的執行過程有可能會因為
kernal
分頁系統的需要,被多次地載入與載出主記憶體。當處理程序找不到某個使用過的頁次時,便會產生分頁錯誤。這時便會更新使用過的頁次集資料。如果有必要的話,會到硬碟中將需要的頁次讀入。有就是說產生了越多次的分頁錯誤,就有可能會做較多次的
disk I/O
動作。越是如此則執行的效率就越差。所以你必須留意這個項目所輸出的數值。如果常常會有很多的分頁錯誤產生的話,有可能表示你的記憶體已經不夠系統使用了,應該做硬體上的投資了。 |
%I |
程式從硬碟所讀入的資料量(單位:block) |
%K |
unshared stack 的平均值(單位:千位元) |
%M |
處理程序執行期間所需的最大記憶體(physical
memory) (單位:千位元) |
%O |
程式輸出到硬碟的資料量(單位:block) |
%S |
kernal process 的 CPU 使用時間(單位:秒) |
%U |
user's process 的 CPU 使用時間(單位:秒) |
%P |
系統使用時間的總和與實際消耗時間的百分比,也就是(%S+%U)/%E
的結果。 |
%W |
swaps 的次數 |
%X |
shared 記憶體的平均值(單位:千位元) |
這十個符號你可以依照你的需要設定是否要將它輸出,以及輸出時的格式。以下我們來看一個實例:
% set time = ( 5 "Elapsed time: %E System time: %S
User time: %U" )
9 % find / -name core -type f -ls
Elapsed time: 1:53 System time: 50.3 User time: 1.8
如果你不設定輸出格式的話,內建指令 time 會以 C shell
所定義的輸出格式來輸出訊息。這個格式為("%Uu %Ss %E %P% %X+%D
%I+%O %F+%W")。下面是不經過設定的輸出格式:
% time find / -name Csherc -ls
(輸出部份省略)
9u 36.1s1:39 38% 0+340k 2859+663io 1250pf+0w
|