Chrono Mock
SpracheDeutsch

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.

FaktorEine reale Minute wird zuNützlich für
x60einer Stundestündliche Jobs, Sitzungs-Timeouts, Token-Laufzeiten
x1440einem Tagtägliche Wechsel, eine 30-Tage-Testversion in einer halben Stunde
x43200einer 30-Tage-Testversiondie ganze Testphase enden sehen, während Sie das hier lesen
x525600einem Jahrjährliche Verlängerungen, Zertifikatsablauf
x1000000etwa 1,9 Jahrendie 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
Eine Aufnahme einer Sitzung, die eine andere Windows-Anwendung steuert. Das linke Fenster ist Chrono Mock, in dem die Uhr der Anwendung am 2038-01-19 mit sechzigfacher Echtzeitgeschwindigkeit hochzählt, während die echte Uhr daneben nur einige Sekunden weiterrückt. Das rechte Fenster ist die getestete Anwendung, deren eigenes Sitzungsprotokoll zeigt, dass sie am 2038-01-19 gestartet ist und seit Minuten läuft, während im Raum kaum eine halbe Minute vergangen ist.
Eine echte Sitzung, die eine echte Anwendung steuert. Achten Sie auf das rechte Fenster: Das getestete Programm hat seinen eigenen Start als 19. Januar 2038 aufgezeichnet, und seine Sitzung hat Minuten gedauert, während die Uhr im Raum Sekunden weitergerückt ist. Die Geschwindigkeit wird während des Laufs geändert, ohne dass etwas neu gestartet wird.

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-duration setzt 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 rast x1440 mit 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-qpc skaliert zusätzlich den hochauflösenden Zähler. Dort lesen Python-3.13+-monotonic, .NET-Stopwatch und Java-nanoTime die 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 →

Ausprobieren