Để so sánh thời gian chạy các script giữa vỏ khác nhau, một số câu trả lời SE đề nghị sử dụng bash
's built-in time
lệnh, như vậy:
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... vv , cho mọi vỏ để kiểm tra. Các điểm chuẩn như vậy không thể loại bỏ thời gian để mỗi vỏ tải và tự khởi tạo . Ví dụ: giả sử cả hai lệnh trên được lưu trữ trên một thiết bị chậm với tốc độ đọc của đĩa mềm ban đầu , (124KB / s), dash
( thực thi ~ 150K ) sẽ tải nhanh hơn khoảng 7 lần so với bash
( ~ 1M ), vỏ thời gian tải sẽ làm lệch các time
con số - thời gian tải trước của các vỏ đó không liên quan đến việc đo thời gian chạy của foo.sh
mỗi vỏ sau khi đạn được nạp.
Cái nào tốt nhất cho di động và sử dụng chung để chạy cho thời gian tập lệnh có thể chạy từ bên trong mỗi shell? Vì vậy, đoạn mã trên sẽ trông giống như:
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
NB: không có vỏ built-in time
lệnh, vì không ai là xách tay hoặc nói chung.
Tốt hơn nữa nếu việc sử dụng cũng có thể định chuẩn thời gian được thực hiện bởi các lệnh và đường ống nội bộ của shell, mà không cần người dùng trước tiên phải bọc chúng trong một tập lệnh. Cú pháp nhân tạo như thế này sẽ giúp:
general_timer_util "while read x ; do echo x ; done < foo"
Một số vỏ ' time
có thể quản lý này. Ví dụ bash -c "time while false ; do : ; done"
công trình. Để xem những gì hoạt động, (và không), trên hệ thống của bạn hãy thử:
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time
?