Tôi giả sử bạn hiểu rằng cả hai lệnh này đang gọi một phiên bản thời gian khác nhau, phải không?
phiên bản tích hợp của bash
% time
GNU thời gian aka. / usr / thùng / lần
% \time
Việc xây dựng trong time
lệnh để bash
có thể được đọc lên trên đây:
% help time
time: time [-p] PIPELINE
Execute PIPELINE and print a summary of the real time, user CPU time,
and system CPU time spent executing PIPELINE when it terminates.
The return status is the return status of PIPELINE. The `-p' option
prints the timing summary in a slightly different format. This uses
the value of the TIMEFORMAT variable as the output format.
GNU time
, /usr/bin/time
thường hữu ích hơn so với tích hợp sẵn.
Đối với vấn đề chính xác của bạn, nó được đề cập ở đây trong ý chính của github này , cụ thể:
Tại sao thời gian bash chính xác hơn thời gian GNU?
Thời gian lệnh bash dựng sẵn cho độ chính xác của milisecond khi thực thi và thời gian GNU (thường là / usr / bin / time) cho độ chính xác đến từng phần trăm giây. Thời gian (2) tòa nhà cho thời gian trong đồng hồ và 100 đồng hồ = 1 giây (thông thường), do đó độ chính xác giống như thời gian GNU. Thời gian bash sử dụng là gì để nó chính xác hơn?
Thời gian Bash sử dụng nội bộ getrusage () và thời gian GNU sử dụng lần (). getrusage () chính xác hơn nhiều vì độ phân giải micro giây.
Bạn có thể xem phần trăm giây với ví dụ sau ( xem dòng đầu ra thứ 5 ):
% /usr/bin/time -v sleep .22222
Command being timed: "sleep .22222"
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:00.22
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): 1968
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 153
Voluntary context switches: 2
Involuntary context switches: 1
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Có thể có nhiều độ phân giải hơn bằng cách sử dụng time
lệnh của bash như vậy & bạn có thể kiểm soát độ phân giải:
# 3 places
% TIMEFORMAT='%3R'; time ( sleep .22222 )
0.224
Từ hướng dẫn Bash về các biến :
TIMEFORMAT
The value of this parameter is used as a format string specifying how the timing information for pipelines prefixed with the time reserved word should be displayed. The ‘%’ character introduces an escape sequence that is expanded to a time value or other information. The escape sequences and their meanings are as follows; the braces denote optional portions.
%%
A literal ‘%’.
%[p][l]R
The elapsed time in seconds.
%[p][l]U
The number of CPU seconds spent in user mode.
%[p][l]S
The number of CPU seconds spent in system mode.
%P
The CPU percentage, computed as (%U + %S) / %R.
The optional p is a digit specifying the precision, the number of fractional digits after a decimal point. A value of 0 causes no decimal point or fraction to be output. At most three places after the decimal point may be specified; values of p greater than 3 are changed to 3. If p is not specified, the value 3 is used.
The optional l specifies a longer format, including minutes, of the form MMmSS.FFs. The value of p determines whether or not the fraction is included.
If this variable is not set, Bash acts as if it had the value
$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed.