Untuk membandingkan menjalankan kali skrip antara kerang yang berbeda, beberapa jawaban SE menyarankan menggunakan bash
's built-in time
perintah, seperti:
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... dll , untuk setiap shell untuk diuji. Tolok ukur seperti itu gagal menghilangkan waktu yang dibutuhkan setiap shell untuk memuat dan menginisialisasi sendiri . Sebagai contoh, misalkan kedua perintah di atas disimpan pada perangkat yang lambat dengan kecepatan baca dari floppy disk awal , (124KB / dtk), dash
(a ~ 150K dieksekusi) akan memuat sekitar 7x lebih cepat daripada bash
( ~ 1M ), shell waktu pemuatan akan memiringkan time
angka - waktu pra-pemuatan kerang-kerang tersebut tidak relevan untuk mengukur waktu proses di foo.sh
bawah setiap kerang setelah kerang dimuat.
Apa kegunaan portabel dan umum terbaik untuk menjalankan skrip waktu yang dapat dijalankan dari dalam setiap shell? Jadi kode di atas akan terlihat seperti:
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
NB: tidak ada perintah built-in shell time
, karena tidak ada yang portabel atau umum.
Lebih baik lagi jika util juga dapat membuat tolok ukur waktu yang diambil oleh perintah internal dan jaringan pipa shell, tanpa pengguna harus terlebih dahulu membungkusnya dalam skrip. Sintaks buatan seperti ini akan membantu:
general_timer_util "while read x ; do echo x ; done < foo"
Beberapa kerang time
dapat mengatur ini. Misalnya bash -c "time while false ; do : ; done"
berfungsi. Untuk melihat apa yang berfungsi, (dan tidak) pada sistem Anda, coba:
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time
?