Farklı kabuklar arasındaki komut çalıştırmak kez karşılaştırarak, bazı SE cevaplar kullanarak önermek bash
s' dahili time
, komuta şöyle:
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... vs , her kabuğun test etmesi için. Bu tür ölçütler, her kabuğun kendini yüklemesi ve başlatması için geçen süreyi ortadan kaldırmaz . Örneğin, yukarıdaki komutların her ikisinin de erken bir disketin okuma hızına sahip yavaş bir cihazda depolandığını varsayalım (124KB / s), dash
( ~ 150K yürütülebilir) kabuktan yaklaşık 7 kat daha hızlı yüklenecektir bash
( ~ 1M ) yükleme süresi time
sayıları çarpıtır - bu mermilerin ön yükleme süreleri , mermiler yüklendikten sonrafoo.sh
her merminin altında çalışma sürelerinin ölçülmesi ile ilgisizdir .
Çalıştırılabilir komut zamanlama çalıştırmak için en iyi taşınabilir ve genel util nedir dahilinde her kabuk? Yukarıdaki kod şöyle görünecektir:
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
Not: hiçbiri taşınabilir veya genel olmadığı için kabuk yerleşik time
komutları yoktur .
Daha da iyisi, util bir kabuğun dahili komutları ve boru hatları tarafından harcanan zamanı, kullanıcı önce bir komut dosyasına sarmak zorunda kalmadan kıyaslayabiliyorsa. Bunun gibi yapay sözdizimi yardımcı olacaktır:
general_timer_util "while read x ; do echo x ; done < foo"
Bazı mermiler time
bunu başarabilir. Örneğin bash -c "time while false ; do : ; done"
işler. Sisteminizde neyin işe yarayıp neyin işe yaramadığını görmek için şunu deneyin:
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time
?