PowerShell v4, 144 बाइट्स
$d=date;gjb|rjb
1..20|%{sajb{$x=date;sleep 3;((date)-$x).Ticks/1e7}>$null}
while(gjb -s "Running"){}(gjb|rcjb)-join'+'|iex
((date)-$d).Ticks/1e7
के $d
बराबर सेट Get-Date
करता है और किसी भी मौजूदा नौकरी इतिहास को साफ करता है Get-Job | Remove-Job
। हम फिर लूप 1..20|%{...}
और प्रत्येक पुनरावृत्ति Start-Job
इसे कार्य के लिए स्क्रिप्ट ब्लॉक पास {$x=date;sleep 3;((date)-$x).ticks/1e7}
करते हैं (मतलब प्रत्येक कार्य उस स्क्रिप्ट ब्लॉक को निष्पादित करेगा)। हम >$null
फीडबैक (यानी, नौकरी का नाम, स्थिति, आदि) को दबाने के लिए उस आउटपुट को पाइप करते हैं जो वापस मिल जाता है।
स्क्रिप्ट ब्लॉक तब सेकंड के लिए सेट $x
होता है Get-Date
, फिर एक नया रीडिंग लेता है , घटाता है , सेकंड प्राप्त करता है और विभाजित करता है (सटीक के साथ)।Start-Sleep
3
Get-Date
$x
.Ticks
1e7
मुख्य धागे में वापस, जब तक कि कोई भी काम अभी भी -S
टेटस है "Running"
, हम एक खाली while
लूप के अंदर स्पिन करते हैं । एक बार ऐसा करने के बाद, हम Get-Job
सभी मौजूदा नौकरियों के लिए वस्तुओं को खींचते हैं, उन पर पाइप Receive-Job
लगाते हैं जो एसटीडीयूएसटी के बराबर खींचेंगे (यानी, वे क्या आउटपुट करते हैं), -join
परिणाम एक साथ +
, और इसे iex
( Invoke-Expression
और इसी तरह eval
) पाइप करें । यह परिणामी नींद के समय के साथ-साथ ओवरहेड उत्पादन करेगा।
अंतिम पंक्ति समान है, जिसमें यह एक नई तिथि प्राप्त करता है, मूल तिथि स्टाम्प को घटाता $d
है .Ticks
, 1e7
कुल निष्पादन समय को आउटपुट करने के लिए और प्राप्त करता है ।
एनबी
ठीक है, इसलिए यह नियमों का एक छोटा सा मोड़ है। जाहिरा तौर पर पहले निष्पादन पर, PowerShell को विभिन्न थ्रेड ऑपरेशन के लिए डिस्क से .NET असेंबली का एक गुच्छा लोड करने की आवश्यकता होती है क्योंकि वे डिफ़ॉल्ट शेल प्रोफाइल के साथ लोड नहीं होते हैं। बाद के निष्पादन, क्योंकि विधानसभाएं पहले से ही स्मृति में हैं, ठीक काम करती हैं। यदि आप शेल विंडो बेकार छोड़ देते हैं, तो आपको PowerShell का अंतर्निहित कचरा संग्रह साथ आने और उन सभी असेंबली को अनलोड करने के लिए मिलेगा , जिससे अगला निष्पादन लंबे समय तक चलेगा क्योंकि यह उन्हें फिर से लोड करता है। मुझे इस पर यकीन नहीं है।
आप इसे नीचे दिए गए रनों में निष्पादन समय में देख सकते हैं। मैंने एक नया खोल शुरू किया, अपनी गोल्फ निर्देशिका में नेविगेट किया और स्क्रिप्ट निष्पादित की। पहला रन भयावह था, लेकिन दूसरे (तुरंत निष्पादित) ने ठीक काम किया। फिर मैंने कुछ मिनटों के लिए शेल संग्रह को छोड़ दिया ताकि कचरा संग्रह से आ सके, और फिर वह रन फिर से लंबा हो, लेकिन बाद में रन फिर से ठीक काम करें।
उदाहरण चलता है
Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.
PS H:\> c:
PS C:\> cd C:\Tools\Scripts\golfing
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
63.232359
67.8403415
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
61.0809705
8.8991164
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
62.5791712
67.3228933
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
61.1303589
8.5939405
PS C:\Tools\Scripts\golfing> .\wait-a-minute.ps1
61.3210352
8.6386886
PS C:\Tools\Scripts\golfing>