2013-06-06 7 views
17

मैं आदेश के लिए समय मापने के लिए/usr/bin/time प्रोग्राम का उपयोग करता हूं। --format पैरामीटर के साथ मैं आउटपुट प्रारूपित कर सकते हैं। उदा।/usr/bin/time --format output मिलीसेकंड में समय बीत गया

/usr/bin/time -f "%e" ls 

बीत चुके सेकंड की बड़ी सटीकता को आउटपुट करने का कोई तरीका है? या बस मिलीसेकंड आउटपुट, सेकेंड नहीं?

/usr/bin/time के मैनुअल में यह केवल कुछ सेकंड के बारे में कुछ कहता है, लेकिन शायद एक तरीका है और कोई मेरी मदद कर सकता है ... धन्यवाद!

EDIT: मुझे बैश कमांड "टाइम" के बारे में पता है जो पर्यावरण चर "TIMEFORMAT" के प्रारूप का उपयोग करता है। क्षमा करें, लेकिन मैं उस env-var को बदलना नहीं चाहता ... मेरे लिए जोखिम भरा प्रतीत होता है, समाधान कुछ ऐसा होना चाहिए जो चल रहा सिस्टम नहीं बदलता :)

+0

मैन पेज इसके बारे में कुछ भी नहीं कहता है। इसलिए मुझे लगता है कि समय के * अपरिवर्तित * संस्करण का उपयोग करना संभव नहीं है। आउटपुट प्रारूप के लिए पैच तैयार करना संभव होना चाहिए, लेकिन मुझे नहीं पता कि उच्च सटीकता प्राप्त करना संभव है या नहीं। – hek2mgl

+0

भविष्य के पाठकों के लिए बस इंगित करना कि 'TIMEFORMAT' चर _inly_ अंतर्निहित 'टाइम' कमांड के आउटपुट को नियंत्रित करने के लिए उपयोग किया जाता है। इसे बदलने से जुड़े कोई जोखिम नहीं है। –

उत्तर

26

एक संभावना date कमांड का उपयोग करना है :

ts=$(date +%s%N) ; my_command ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds" 

%Nshould return nanoseconds, और 1 मिलीसेकंड 1000000 nanosecond, इसलिए विभाग द्वारा समय मिलीसेकंड में my_command निष्पादित करने के लिए ले जाया वापसी होगी है।

नोट कि %Nis not supported on all systems, but most of them.

+0

उत्कृष्ट, स्वीकार्य! तारीख के बारे में नहीं सोचा था, लेकिन यह काफी अच्छा है! नैनोसेकंड से मिलीसेकंड तक पहुंचने के लिए आपको 1000000 से विभाजित करना होगा, हालांकि: ts = $ (दिनांक +% s% n); नींद 1; tt = $ (($ (दिनांक +% s% एन) - $ ts)/1000000)); $ tt – Preexo

+0

सही प्रतिबिंबित करें, '10^6' से' 10^3' तक विभाजित करने की आवश्यकता है। – devnull

+2

ओएसएक्स पर उन लोगों के लिए जो आज से आवश्यक अस्थायी संकल्प के बिना हैं, कोई मूल तारीख को जीडीएटी के साथ प्रतिस्थापित कर सकता है। उदाहरण के लिए: यदि आवश्यक हो तो 'ब्रूड कोर्यूटिल' स्थापित करें और फिर 'ts = $ (gdate +% s% n); नींद 1; tt = $ (($ (gdate +% s% n) - $ ts)/1000000)); echo $ tt' [स्रोत] (http://apple.stackexchange.com/questions/135742/time-in-milliseconds-since-epoch-in-the-terminal) – snodnipper

5

सुविधा के लिए मैं एक स्क्रिप्ट में devnull का जवाब बनाया (मैं नामित यह millisecond समय)।

#!/bin/bash 
ts=$(date +%s%N) ; [email protected] ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds" 

मैंने स्क्रिप्ट को /usr/local/bin में रखा है।
इसे अधिकारों को निष्पादित करें chmod +x /usr/local/bin/millisecond-time
अब मैं इसे इस तरह उपयोग कर सकता हूं: millisecond-time my_command

पी। अगर मैं प्रतिनिधि था तो यह एक टिप्पणी होगी।

संबंधित मुद्दे