यह ढूँढना कि सिस्टम। डायग्नोस्टिक्स। स्टॉपवॉच क्लास में थोड़े समय की अवधि (यानी 20 सेकंड) पर भी सटीक रूप से गलत लगता है।पावरहेल टाइमर/स्टॉपवॉच सटीकता
$elapsed = [System.Diagnostics.Stopwatch]::StartNew()
write-host "Started at $(get-date)"
for ($t=1; $t -le 20; $t++) {
Write-Host "Elapsed Time: $($elapsed.Elapsed.ToString())"
sleep 1
}
write-host "Ended at $(get-date)"
write-host "Total Elapsed Time: $($elapsed.Elapsed.ToString())"
Started at 02/02/2013 15:08:43
Elapsed Time: 00:00:00.0329924
Elapsed Time: 00:00:01.0417435
Elapsed Time: 00:00:02.0547547
Elapsed Time: 00:00:03.0689716
Elapsed Time: 00:00:04.0820497
Elapsed Time: 00:00:05.0963413
Elapsed Time: 00:00:06.1113915
Elapsed Time: 00:00:07.1244044
Elapsed Time: 00:00:08.1396105
Elapsed Time: 00:00:09.1528952
Elapsed Time: 00:00:10.1659905
Elapsed Time: 00:00:11.1800884
Elapsed Time: 00:00:12.1940009
Elapsed Time: 00:00:13.2081824
Elapsed Time: 00:00:14.2223585
Elapsed Time: 00:00:15.2375023
Elapsed Time: 00:00:16.2506360
Elapsed Time: 00:00:17.2656845
Elapsed Time: 00:00:18.2790676
Elapsed Time: 00:00:19.2928700
Ended at 02/02/2013 15:09:04
Total Elapsed Time: 00:00:20.3080067
सटीकता बहाव के इस प्रकार जब PowerShell में स्टॉपवॉच वर्ग का उपयोग कर उम्मीद की जा करने के लिए है: मेरी प्रक्रिया एक गुजरे 20 सेकंड चलाने के लिए एक प्रक्रिया कोडित के लिए 20.3+ सेकंड के समय दिखा रहा है? समय अवधि के लिए आनुपातिक वृद्धि में लगता है (यानी 10 सेकंड 0.1 से 20 और 20 तक 20) है। क्या मेरा कोड गलती है?
प्रारंभ और समाप्ति लिखें-होस्ट कॉल से छुटकारा पाएं और यह भी करीब होना चाहिए। स्टॉपवॉच विंडोज के उच्च आवृत्ति काउंटर एपीआई का उपयोग करता है, इसलिए यह बहुत सटीक है। –
रिनेंट, यह 20 सेकंड होगा। लेकिन यह अब एक स्टॉपवॉच नहीं होगा - बस एक नींद टाइमर। यह मेरी स्क्रिप्ट को तब तक चलने से रोक देगा जब तक नींद पूरी नहीं हो जाती। मुझे इसे एक प्रक्रिया चलाने की ज़रूरत है और अंत में, मुझे बताएं कि इसे पूरा करने में कितना समय लगेगा। –
मुझे लगता है कि आप मेरे उदाहरण के बिंदु से चूक गए हैं। मैं यह दिखाने की कोशिश कर रहा था कि 'डायग्नोस्टिक्स। स्टॉपवॉच' वर्ग गलत नहीं है। आपकी स्क्रिप्ट में स्टॉपवॉच का कारण "20.3080067" सेकंड दिखाता है क्योंकि आपकी स्क्रिप्ट सोने के अलावा अन्य चीजें कर रही है। इसके अलावा, 'गेट-डेट' कथन का कारण बिल्कुल 20 सेकेंड अलग दिखता है क्योंकि प्रदर्शित समय निकटतम दूसरे तक गोल होता है। – Rynant