Die Uhr einer App schneller laufen lassen
Eine 30-Tage-Testversion braucht 30 Tage, um abzulaufen, solange man die Zeit nicht verschieben kann. Der übliche Rat ist, die Systemuhr vorzustellen, was Administratorrechte erfordert und jedes andere Programm auf dem Rechner mitreißt. Dies verschiebt stattdessen einen einzigen Prozess.
Wie schnell
Wählen Sie einen ganzzahligen Faktor. Die Uhr der Anwendung läuft so viel Mal schneller als die echte, ab dem Zeitpunkt, an dem die Sitzung beginnt.
| Faktor | Eine reale Minute wird zu | Nützlich für |
|---|---|---|
x60 | einer Stunde | stündliche Jobs, Sitzungs-Timeouts, Token-Laufzeiten |
x1440 | einem Tag | tägliche Wechsel, eine 30-Tage-Testversion in einer halben Stunde |
x43200 | einer 30-Tage-Testversion | die ganze Testphase enden sehen, während Sie das hier lesen |
x525600 | einem Jahr | jährliche Verlängerungen, Zertifikatsablauf |
x1000000 | etwa 1,9 Jahren | die Obergrenze |
# Mit der echten Zeit von jetzt starten und einen Tag pro Minute laufen lassen chrono run "C:\apps\test.exe" --mode x1440 # An einem gewählten Datum starten und von dort beschleunigen chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440 # Stattdessen die Uhr komplett anhalten chrono run "C:\apps\test.exe" --mode frozen
Was Leute überrascht: Es gibt zwei Uhren
Die Wanduhr zu beschleunigen - das, was DateTime.Now und seine
Entsprechungen liefern - beschleunigt für sich genommen keinen Countdown. Das sind
zwei verschiedene Fragen, die eine Anwendung dem Betriebssystem stellen kann, und viel Software
misst „dreißig Tage“ mit der zweiten statt mit der ersten.
Die Dauerachse - Tick-Zähler, Sleeps, Waits und Timer - ist deshalb ein eigener Schalter:
--scale-durationsetzt auch Tick-Zähler, Pausen und Timer auf die Sitzungsuhr, während Wartevorgänge auf Objekte gezählt werden und ihre echte Länge behalten. Ohne diese Option rastx1440mit dem Kalender voraus, während ein Fünf-Sekunden-Timer weiterhin fünf echte Sekunden dauert - nur ein Timer auf ein bestimmtes Datum mit Uhrzeit folgt in jeder Sitzung der Sitzungsuhr.--scale-qpcskaliert zusätzlich den hochauflösenden Zähler. Dort lesen Python-3.13+-monotonic, .NET-Stopwatchund Java-nanoTimedie verstrichene Zeit, und er ist standardmäßig aus, weil seine Skalierung im Test das Rendering destabilisiert hat.
Wenn der Faktor einem Countdown scheinbar nichts tut, ist das fast immer der Grund.
# Eine Timer-App: den Kalender UND die Countdowns beschleunigen chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration # Eine Python- oder .NET-App, die verstrichene Zeit am hochauflösenden Zähler misst chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc
Die Geschwindigkeit ändern, ohne neu zu starten
Der Faktor lässt sich mitten in der Sitzung ändern, und die Uhr wird neu verankert statt gesprungen, sie geht also nie rückwärts, wenn die Geschwindigkeit sinkt. Sie können die Uhr auch direkt springen lassen - vorwärts oder rückwärts, wie ein Laptop es nach dem Abgleich mit einem Zeitserver tut, und das ist der Fall, der alles bricht, was verstrichene Zeit ohne Absicherung misst.
# Mit x60 laufen, dann nach zwei Sekunden auf x1440 wechseln chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440 # Laufen, dann nach fünf Sekunden die Uhr auf einen gewählten Zeitpunkt springen lassen chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00
Was es nicht tut
- Es berührt die Systemuhr nicht. Das ist der Zweck, keine Einschränkung - aber es bedeutet, dass alles, was die Zeit von einem Server, einer Datenbank oder einem anderen Rechner liest, unberührt bleibt, und die Prüfung sagt Ihnen, wenn das passiert.
- Ein Sprung ändert, was die Anwendung sieht, nicht wann sie aufwacht. Pausen und Timer, die schon an den Kernel übergeben sind, behalten die Länge, die sie beim Stellen bekamen. Die meisten Anwendungen fragen die Uhr ab, deshalb funktionieren Sprünge in der Praxis - aber nicht bei allen.
- Es verlangsamt die Zeit nicht. Faktoren sind ganze Zahlen ab eins, dazu eine eingefrorene Uhr bei null.
Ob etwas davon Ihre Anwendung erreicht hat, sollte man nicht annehmen. Die Sitzung sagt es →