ทำให้นาฬิกาของแอปหนึ่งตัวเดินเร็วขึ้น
ช่วงทดลองใช้ 30 วันต้องใช้เวลา 30 วันกว่าจะหมด เว้นแต่คุณจะเลื่อนเวลาได้ คำแนะนำทั่วไปคือเลื่อนนาฬิกาของระบบไปข้างหน้า ซึ่งต้องใช้สิทธิ์ผู้ดูแลระบบและลากโปรแกรมอื่นทุกตัวในเครื่องไปด้วย เครื่องมือนี้เลื่อนเพียงหนึ่งโพรเซสแทน
เร็วแค่ไหน
เลือกตัวคูณที่เป็นจำนวนเต็ม นาฬิกาของแอปจะเดินเร็วกว่านาฬิกาจริงตามจำนวนเท่านั้น นับจากช่วงเวลาที่เซสชันเริ่ม
| ตัวคูณ | หนึ่งนาทีจริงกลายเป็น | เหมาะสำหรับ |
|---|---|---|
x60 | หนึ่งชั่วโมง | งานรายชั่วโมง การหมดเวลาของเซสชัน อายุของโทเค็น |
x1440 | หนึ่งวัน | การเปลี่ยนวันรายวัน ช่วงทดลองใช้ 30 วันในครึ่งชั่วโมง |
x43200 | ช่วงทดลองใช้ 30 วัน | ดูช่วงทดลองใช้ทั้งช่วงจบลงระหว่างที่คุณอ่านข้อความนี้ |
x525600 | หนึ่งปี | การต่ออายุรายปี ใบรับรองหมดอายุ |
x1000000 | ราว 1.9 ปี | เพดานสูงสุด |
# เริ่มที่เวลาจริงตอนนี้ แล้วเดินหนึ่งวันต่อนาที chrono run "C:\apps\test.exe" --mode x1440 # เริ่มที่วันที่ที่เลือก แล้วเร่งความเร็วจากตรงนั้น chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440 # หรือหยุดนาฬิกาไว้นิ่งสนิทแทน chrono run "C:\apps\test.exe" --mode frozen
จุดที่คนมักพลาด: นาฬิกามีสองแบบ
การเร่งนาฬิกาติดผนัง - ค่าที่ DateTime.Now และของที่เทียบเท่าคืนมา - ไม่ได้เร่งการนับถอยหลังไปด้วยโดยอัตโนมัติ นั่นเป็นสองคำถามที่ต่างกันที่แอปถามระบบปฏิบัติการได้ และซอฟต์แวร์จำนวนมากวัด “สามสิบวัน” ด้วยอันหลังแทนที่จะเป็นอันแรก
ดังนั้นแกนระยะเวลา - จำนวนติ๊ก sleep wait และตัวจับเวลา - จึงเป็นสวิตช์แยกต่างหาก:
--scale-durationย้ายตัวนับติก การหลับ และตัวจับเวลาไปใช้นาฬิกาของเซสชันด้วย ส่วนการรอออบเจกต์ถูกนับและคงความยาวจริงไว้ หากไม่ใช้ตัวเลือกนี้x1440จะเร่งปฏิทินไปข้างหน้า ขณะที่ตัวจับเวลาห้าวินาทียังใช้เวลาจริงห้าวินาที มีเพียงตัวจับเวลาที่ตั้งไว้ที่วันและเวลาหนึ่งเท่านั้นที่ตามนาฬิกาของเซสชันในทุกเซสชัน--scale-qpcปรับสเกลตัวนับความละเอียดสูงเพิ่มเติม ซึ่งเป็นที่ที่monotonicของ Python 3.13+Stopwatchของ .NET และnanoTimeของ Java อ่านเวลาที่ผ่านไป และปิดไว้เป็นค่าเริ่มต้นเพราะการปรับสเกลมันทำให้การเรนเดอร์ไม่เสถียรในการทดสอบ
ถ้าตัวคูณดูเหมือนไม่ทำอะไรกับการนับถอยหลัง เกือบทุกครั้งคือเพราะเรื่องนี้
# แอปจับเวลา: เร่งทั้งปฏิทินและการนับถอยหลัง chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration # แอป Python หรือ .NET ที่วัดเวลาที่ผ่านไปด้วยตัวนับความละเอียดสูง chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc
เปลี่ยนความเร็วโดยไม่ต้องรีสตาร์ต
ตัวคูณเปลี่ยนได้กลางเซสชัน และนาฬิกาถูกตรึงจุดใหม่แทนที่จะกระโดด จึงไม่เดินถอยหลังเมื่อความเร็วลดลง คุณยังกระโดดนาฬิกาได้เลยโดยตรง - ไปข้างหน้า หรือถอยหลังแบบที่โน้ตบุ๊กทำหลังซิงก์กับเซิร์ฟเวอร์เวลา ซึ่งเป็นกรณีที่ทำให้ทุกอย่างที่วัดเวลาที่ผ่านไปโดยไม่มีตัวป้องกันพัง
# รันที่ x60 แล้วสลับเป็น x1440 หลังผ่านไปสองวินาที chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440 # รัน แล้วกระโดดนาฬิกาไปยังช่วงเวลาที่เลือกหลังผ่านไปห้าวินาที chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00
สิ่งที่มันจะไม่ทำ
- มันไม่แตะนาฬิกาของระบบ นั่นคือประเด็น ไม่ใช่ข้อจำกัด - แต่หมายความว่าอะไรก็ตามที่อ่านเวลาจากเซิร์ฟเวอร์ ฐานข้อมูล หรือเครื่องอื่นจะไม่ได้รับผลกระทบ และการตรวจสอบจะบอกคุณเมื่อเกิดเรื่องนี้
- การกระโดดเปลี่ยนสิ่งที่แอปพลิเคชันเห็น ไม่ใช่เวลาที่มันตื่น การหลับและตัวจับเวลาที่ส่งให้เคอร์เนลไปแล้วจะคงความยาวที่ได้รับตอนตั้งไว้ แอปพลิเคชันส่วนใหญ่สอบถามนาฬิกาเป็นระยะ การกระโดดจึงได้ผลในทางปฏิบัติ แต่ไม่ใช่ทุกตัว
- มันไม่ทำให้เวลาช้าลง ตัวคูณเป็นจำนวนเต็มตั้งแต่หนึ่งขึ้นไป บวกนาฬิกาที่หยุดค้างที่ศูนย์
สิ่งเหล่านี้ไปถึงแอปของคุณหรือไม่ไม่ใช่เรื่องที่ควรสันนิษฐาน เซสชันบอกคุณเอง →