สำหรับการเปรียบเทียบครั้งเรียกใช้สคริปต์ระหว่างเปลือกหอยแตกต่างกันบางคำตอบ SE แนะนำให้ใช้bash
's ในตัว time
คำสั่งเช่นดังนั้น:
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... ฯลฯให้ทุกเชลล์ทำการทดสอบ มาตรฐานดังกล่าวล้มเหลวในการกำจัดเวลาที่แต่ละเปลือกโหลดและเริ่มต้นตัวเอง ตัวอย่างเช่นสมมติว่าทั้งสองคำสั่งดังกล่าวถูกจัดเก็บไว้ในอุปกรณ์ช้ากับความเร็วในการอ่านของฟล็อปปี้ดิสก์ต้น (124KB / s), dash
(ก~ 150Kปฏิบัติการ) จะโหลดประมาณ7 เท่าเร็วกว่าbash
( ~ 1M ) เปลือก เวลาในการโหลดจะเอียงtime
ตัวเลข - เวลาก่อนการโหลดของกระสุนเหล่านั้นไม่เกี่ยวข้องกับการวัดเวลาการทำงานของfoo.sh
ใต้แต่ละเชลล์หลังจากกระสุนถูกโหลดแล้ว
แบบพกพาและยูทิลิตี้ทั่วไปที่ดีที่สุดในการรันสำหรับกำหนดเวลาสคริปต์ที่สามารถเรียกใช้จากภายในแต่ละเชลล์คืออะไร ดังนั้นโค้ดด้านบนจะมีลักษณะดังนี้:
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
หมายเหตุ: ไม่มีคำสั่งในตัวของ เชลล์time
เนื่องจากไม่มีแบบพกพาหรือทั่วไป
ยังดีกว่าหากการใช้งานนั้นสามารถเปรียบเทียบเวลาที่ใช้โดยคำสั่งและท่อภายในของเชลล์โดยที่ผู้ใช้ไม่ต้องรวมคำสั่งเหล่านั้นไว้ในสคริปต์ ไวยากรณ์ประดิษฐ์เช่นนี้จะช่วย:
general_timer_util "while read x ; do echo x ; done < foo"
หอยบางตัวtime
สามารถจัดการสิ่งนี้ได้ ตัวอย่างbash -c "time while false ; do : ; done"
งาน หากต้องการดูว่าอะไรทำงาน (และไม่) ในระบบของคุณลอง:
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time
?