Neden bash zamanı GNU zamanından daha hassas?


12

Buitin bash komutu timemilisaniyelik yürütme hassasiyeti sağlar ve GNU time(genellikle / usr / bin / time) santisaniye hassasiyet verir. Sistem times(2)çağrısı saatler cinsinden zaman verir ve 100 saat = 1 saniye (genellikle), bu nedenle hassasiyet GNU gibidir time. Yani soru şu: bash ne timekullanıyor, böylece daha kesin mi?


Hmmm ... ikisi de benim sistemime milisaniye veriyor ... (FC16)
nico

Garip. Size printf özelliği nedir ("% d \ n", sysconf (_SC_CLK_TCK)); Yukarıda belirttiğim gibi 100 olmalıdır. Birisi benimkine benzer gözlemlere sahip: dirac.org/linux/time ama yine de bir açıklama yok.
asukasz Sowa

evet, aslında 100 veriyor ...
nico

O zaman neden bunun hakkında hiçbir fikrim yok. GNU zamanının, saniyeye dönüştürmek için sysconf (_SC_CLK_TCK) kullanan syscall zamanlarını kullanması gerekir.
asukasz Sowa

FWIW "bash time" dediğinizde, BSD'yi timekullandığınız gibi kastettiğini varsayıyorum getrusage.
Dennis

Yanıtlar:


16

Bazı hardcore bash kodu inceledikten sonra bunu bash öğrendim timekullanır getrusage()ve GNU timekullanımlarını times(). getrusage()mikrosaniye çözünürlüğü nedeniyle çok daha hassastır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.