UNIX "समय" कमांड के बराबर विंडोज


69

तो, यूनिक्स के पास एक timeकमांड है जो उपयोगकर्ताओं को उनके कोड / अन्य चीजों का समय देता है। मैं सोच रहा था कि क्या विंडोज कमांड लाइन में ऐसा ही कुछ है।

साथ ही, मैंने यहां लिनक्स कमांड लाइन के बारे में एक पिछला प्रश्न पूछा था । क्या हम विंडोज के लिए भी ऐसा ही कर सकते हैं? यदि हां, तो कैसे?


2
विंडोज में मानक cmd.exe है, लेकिन यदि आप लिनक्स संस्करण के करीब कुछ चाहते हैं तो इसे पॉवरशेल प्राप्त करें, इसका तरीका बेहतर है।
गुइलेर्मो सिलिसो ट्रूबा

मैंने पहले परिणाम के लिए Google पर "विंडोज़ के लिए कमांड टाइम" की खोज की: http://stackoverflow.com/questions/673523/how-to-measure-execution-time-of-command-in-windows-command-line
डेविड मिशेल

मैं विंडोज 7 पर हूं और मैंने ऊपर पोस्ट किए गए समाधान की कोशिश की। मैं निम्नलिखित त्रुटि मिलती है: Unable to query system performance data (c0000004)। मैं इसे googled और किसी और को एक ही समस्या थी, लेकिन मंच कोई समाधान नहीं सुझाता है। वैसे भी सुझाव के लिए धन्यवाद। क्या कोई दूसरे हिस्से के लिए कुछ सुझा सकता है?
efficiencyIsBliss

@eff, timeit.exe सर्वर 2003 और XP AFAIK के लिए है, मुझे नहीं लगता कि यह 7 के साथ संगत है।
John T

जवाबों:


57

Powershell का उपयोग करें

Measure-Command {start-process whateveryouwantexecute -Wait}

आपकी आवश्यकता के लिए संपादित किया गया

Measure-Command {start-process java -argumentlist "whateverargumentisneeded" -wait}

यहाँ मैं क्या करने की कोशिश की है Measure-Command {java test <inputfile> -Wait}:। मुझे समय-संबंधित आंकड़ों की एक सूची मिली, लेकिन कोड से आउटपुट नहीं। क्या मुझसे कुछ ग़लत हो रहा है?
efficiencyIsBliss

@ दक्षता: आप start-processकमांड को भूल गए ।
साशा चोडगोव

स्टार्ट-प्रोसेस: एक स्थितिगत पैरामीटर नहीं पाया जा सकता है जो तर्क को स्वीकार करता है '। \ 6-8.txt'। लाइन में: 1 char: 31 + माप-कमांड {start-process <<<< java। \ Dancebattle। \ 6-8.txt -wait} + CategoryInfo: InvalidArgument: (:) [प्रारंभ-प्रक्रिया], ParadBindingException + FullQualifiedErrorIdror : पोजलपैरमीटरनोटफ़ाउंड, Microsoft.PowerShell.Commands.StartProcessCommand`
दक्षता

1
मैं उस समय को मापने की कोशिश कर रहा हूं, जिसका उपयोग करके पायथन स्क्रिप्ट को चलाने में लगता है Measure-Command {start-process \Python27\python test.py -Wait}। यह प्रक्रिया को चलाने के लिए एक नई cmd विंडो को खोलता है, लेकिन फिर विंडो को बंद कर देता है जब यह चल रहा होता है। मैं स्क्रिप्ट के आउटपुट को भी देखना चाहता हूं, इसलिए मैं खिड़की को कैसे खुला रख सकता हूं?
जॉन पीटर थॉम्पसन गार्स

2
@ JohnPeterThompsonGarcés स्टार्ट-प्रोसेस cmdlet के -NoNewWindow पैरामीटर का उपयोग करें
mjsr

21

मैं विन XP का उपयोग कर रहा हूं, किसी कारण से, timeit.exeमेरे लिए काम नहीं कर रहा है। मुझे एक और विकल्प मिला ptime:

ptime 1.0 - सटीक रूप से कार्यक्रम निष्पादन समय को मापें

ptime किसी भी निर्दिष्ट कमांड और मापदंडों को चलाएगा, और निष्पादन समय (रन समय) को सेकंड में मापेगा, 5 मिलीसेकंड या बेहतर। यह एक स्वचालित प्रक्रिया टाइमर या प्रोग्राम टाइमर है जिसका उपयोग बेंचमार्क उद्देश्यों के लिए किया जाता है।


ptime का एक छोटा सा बग है। PIME हमेशा 0 को त्रुटि स्तर के रूप में लौटाता है, भले ही "बच्चा" प्रोग्राम त्रुटि के साथ बाहर निकल जाए
Yura Shinkarev

सुपर सरल और सटीक आउटपुट।
Janpio

Win10 में ठीक काम करने लगता है।
12

18

आप एक बैच स्क्रिप्ट के साथ थोड़ा धोखा कर सकते हैं ...

@echo off
echo %time% < nul
cmd /c %1
echo %time% < nul

फिर इस स्क्रिप्ट के तर्क के रूप में अपना कार्यक्रम चलाएं ...

टाइमर myprogram.exe

और तर्क के लिए ...

टाइमर "myprogram.exe -sw1 -sw2"

उदाहरण आउटपुट:

17:59:20.02
some text
17:59:20.03

बैच लिपि को अपने PATH वैरिएबल में कहीं रखें, उदा C:\Windows\System32और नाम दें timer.cmd। बेशक एक दूसरे cmd उदाहरण के लिए एक छोटा प्रदर्शन हिट है, हालांकि बहुत कम है।


यह प्रॉम्प्ट काम नहीं करेगा, @echo off echo %time% < nul cmd /c %1 echo %time% < nul आपने पर्यावरण चर (?) पर समापन% को छोड़ दिया

कमांड लाइन मापदंडों के लिए% 1 की तरह कोई समापन% नहीं है। क्या आपका आशय यही था?
एंड्रयू जे। ब्रिअम

2
क्यों आप अनुप्रेषित होगा nul में echo ? echoइनपुट कभी नहीं पढ़ता।
जोए

1
आप बदल सकते हैं cmd /c %1करने के लिए cmd /c %*, ताकि आप आदेश तर्क के लिए उद्धरण चिह्न को बचा सकता है
stanleyxu2005

3

timeविंडोज पर यूनिक्स के बराबर कोई प्रत्यक्ष नहीं है ।

जॉर्जिया विश्वविद्यालय में यूनिक्स उपयोगकर्ताओं के लिए विंडोज कमांड की एक संक्षिप्त सूची है

मुझे पुराने Windows कमांड प्रॉम्प्ट मिलते हैं और .bat स्क्रिप्टिंग यूनिक्स गोले की तुलना में सीमित है, लेकिन फाइलों पर लूपिंग के लिए कुछ सुविधाएं हैं आदि। CommandWindows.com में कुछ सुझाव हैं

आप या तो bashविंडोज पर स्थापित कर सकते हैं (जैसे कि सिगविन स्थापित करके) या विंडोज पॉवर्सशेल सीखें (जो मैं मान रहा हूं कि कुछ समान करने का एक साधन है)।


2

आपके कोड के लिए आउटपुट को एक फ़ाइल में डाला जा सकता है: java test <inputfile> | Out-File d:\a.txt

यह मापने में आपको कितना समय लगता है, इसे मापने के लिए उपाय-कमांड में रखना होगा:

Measure-Commmand {java test <inputfile> | Out-File d:\a.txt}


2

यदि आप माप-कमान के साथ पॉवरशेल का उपयोग करने का प्रयास करते हैं, तो ध्यान रखें कि कुछ अनपेक्षित गोच हो सकते हैं। मेरा कमांड> पुनर्निर्देशन का उपयोग करके किसी फ़ाइल को द्विआधारी डेटा लिखता है लेकिन पॉवरशेल ने फ़ाइल की शुरुआत में एक बीओएम जोड़ा और हर लिखने के बाद एक सीआरएलएफ लाइन ब्रेक!


1

कुछ कॉफी ने मुझे इसके साथ आने में मदद की:

function time { $Command = "$args"; Measure-Command { Invoke-Expression $Command 2>&1 | out-default} }

और अगर आप चाहते हैं कि यह कुछ भी न करे, तो बस आउट-नल से बदल दें:

function timequiet { $Command = "$args"; Measure-Command { Invoke-Expression $Command 2>&1 | out-null} }

आप इसे इस तरह उपयोग करते हैं:

PS C:\> time sleep 5


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 990
Ticks             : 49906722
TotalDays         : 5,77624097222222E-05
TotalHours        : 0,00138629783333333
TotalMinutes      : 0,08317787
TotalSeconds      : 4,9906722
TotalMilliseconds : 4990,6722



PS C:\>

1

उपयोग में आसानी के लिए, यहां पर चॉकलेट पैकेज है: https://chatalogy.org/packages/ptime C:/> choco install ptime

यदि लाभ ptimeयह है कि यह यूनिक्स संस्करण की तरह काम करता है और कंसोल आउटपुट देता है, जो Measure-Command { XXX }(या कम से कम मुझे नहीं पता कि यह कैसे करना है)।


0

'समय' कमांड प्राप्त करने के लिए कुछ अलग विकल्प हैं। मेरी प्राथमिकता सिगविन को स्थापित करने की है (जो UNIX की तरह timeकमांड के साथ आता है )।

वैकल्पिक रूप से, आप एक स्क्रिप्ट लिख सकते हैं और इसे अपने पथ में जोड़ सकते हैं (ताकि आप पूरे पथ को निर्दिष्ट किए बिना इसे निष्पादित कर सकें)।

यदि आपके पास Powershell उपलब्ध है, तो इस स्क्रिप्ट को आज़माएं (फ़ाइलों को कॉल करते समय काम करता है - 'exe', आदि)।

$start = get-date
if ($args.length -gt 1) {
start-process $args[0] $args[1..$args.length] -workingdirectory $pwd -nonewwindow -wait
} else {
start-process $args[0] -workingdirectory $pwd -nonewwindow -wait
}
$end = get-date
$elapsed = $end - $start
write-host $end-$start
# datetime format
write-host $elapsed
# easy-to-read format
echo $elapsed

(उदाहरण के लिए) कोड चलाएँ:

time.ps1 python program.py

बैच का उपयोग करते हुए , मैं यहाँ से (Stackoverflow.com पर) शीर्ष उत्तरों का सुझाव दूंगा । दोनों को ही कॉपी-पेस्ट करना होगा। ध्यान दें कि यदि आप paxdiablo के समाधान का उपयोग करते हैं , तो आपको प्रतिस्थापित करना चाहिए

ping -n 11 127.0.0.1 >nul: 2>nul: 

साथ में

%*

0

सूक्ति एक अच्छा समाधान है यदि आपको केवल कमांड के कुल रन समय की आवश्यकता नहीं है, लेकिन लाइन माप के लिए भी लाइन:

एक कमांड लाइन उपयोगिता टाइमस्टैम्प जानकारी को दूसरे कमांड के मानक आउटपुट के लिए प्रस्तुत करने के लिए। लंबे समय तक चलने वाली प्रक्रियाओं के लिए उपयोगी जहाँ आप इतना लंबा समय ले रहे हैं का एक ऐतिहासिक रिकॉर्ड चाहते हैं।

रनिंग द्वारा इंस्टॉल किया गया है npm install -g gnomon, तो बस इसके माध्यम से उपयोग करें command | gnomon

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.