Saya sudah memeriksa ini , tetapi solusi yang diberikan tidak bekerja untuk saya.
Menggunakan tanggal saya bisa mendapatkan waktu eksekusi dalam hitungan detik:
T="$(date +%s)"
#some work here
T="$(($(date +%s)-T))"
echo "execution time (secs) ${T}"
Namun, ketika saya mencoba ini:
T="$(date +%s%N)"
#some work here
T="$(($(date +%s%N)-T))"
Menambahkan% N (seperti di atas) ke tanggal untuk mendapatkan ketepatan nano-detik saya mendapatkan kesalahan berikut: -bash: 1369320760N: nilai terlalu besar untuk basis (token kesalahan adalah "1369320760N")
Adakah yang tahu cara mengukur waktu eksekusi dalam milidetik menggunakan bash di bawah Mac OS X?
# some work here
ommited, saya mendapatkan waktu dari 0,2 hingga 0,3 detik - apa yang seharusnya nol (atau setidaknya konstan) untuk mencapai tujuan Anda. Sedangkan/usr/bin/time usleep 50000
waktu stabil reasonale 0,05 +/- 0,01 detik. (Hanya diuji di Linux, tidak tahu apakah / usr / bin / waktu dan / atau usleep tersedia di OSX.)Jawaban:
Karena OSX adalah sistem BSD-ish, itu perpustakaan strftime tidak memiliki
%N
( http://www.freebsd.org/cgi/man.cgi?query=date )Apakah perintah bash builtin
time
memberi Anda informasi yang Anda butuhkan?sumber
Saya akan pergi rute ini jika saya membutuhkan milidetik dan BSD tidak mendukung tanggal
+%s%N
sumber
echo $(($(date +%s%N)/1000000))
Ini akan mengkonversi dari nano-detik ke mili-detik.Dari @mpy,
date +%s.%N
bekerja.Output berbeda antara linux dan OS X:
linux:
1369322592.573787111
OS X:
1369322610.N
sumber
date +%s.%N
(tapi saya tidak dapat memeriksa OSX; ini bekerja di Linux). Tapi masalahnya kemudian adalah, bahwabash
's$(( ))
IMHO tidak mampu menangani angka floating point.Jika Anda menginstal,
coreutils
Anda dapat menggunakan GNU Linuxdate
dengan menulisgdate
.coreutils tersedia dengan Homebrew:
brew install coreutils
.sumber
Seperti jawaban lain yang disebutkan, tanggal OS X tidak mendukung% N (nanodetik).
Bisakah Anda menyimpan perintah ke waktu sebagai skrip? Atau gunakan subkulit atau grup perintah untuk mereka:
Atau jumlah waktu dari masing-masing perintah:
Atau gunakan beberapa bahasa skrip:
%.3f
adalah penentu format untuk angka floating point dengan 3 angka desimal. Time.now adalah metode kelas dari kelas Time.sumber
ruby -e 'puts "%.3f" % Time.now'
,ruby
panggil juru ruby,-e
jalankan skrip yang mengikuti pada baris perintah.puts
adalah rubyprintf
(semacam),Time
adalah objek ruby danTime.now
merupakan detik sejak zaman. Menggunakan%.3f
trim output ke 3 tempat desimal, yaitu milidetik (bagian ".046" dan ".943" dari output.)time
adalah alat baris perintah yang kali berapa lama untuk menjalankan perintah yang mengikuti. Lihatman time
untuk lebih jelasnya.Glenn benar,
time
adalah perintah yang Anda cari, tetapi untuk mengurai info yang Anda inginkan, Anda harus meneruskannya ke beberapa prosesor lain sepertised
.time command-goes-here >/dev/null 2>$1|sed rules-go-here
Perintah ini akan menghilangkan output dari perintah itu sendiri (mengirimkan output standar dan kesalahan ke / dev / null), dan meneruskan hasil waktu ke sed, di mana Anda akan perlu memilih aturan yang sesuai untuk mengedit aliran, dan output nilai yang diinginkan.
sumber