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ที่จะดึงเทียบเท่า STDOUT (เช่นสิ่งที่พวกเขาส่งออก) -joinผลลัพธ์พร้อมกับ+และท่อไปiex( Invoke-Expressionและคล้ายกับeval) สิ่งนี้จะเอาท์พุทเวลาสลีปผลลัพธ์บวกค่าใช้จ่าย
บรรทัดสุดท้ายมีความคล้ายคลึงกันซึ่งจะได้รับวันที่ใหม่ลบการประทับวันที่ต้นฉบับ$dรับ.Ticksและหารด้วย1e7เพื่อแสดงเวลาดำเนินการทั้งหมด
NB
ตกลงดังนั้นนี้เป็นเพียงเล็กน้อยโก่งของกฎ เห็นได้ชัดว่าในการดำเนินการครั้งแรก 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>