Chrono Mock
JęzykPolski

Spraw, żeby zegar jednej aplikacji szedł szybciej

30-dniowa wersja próbna wygasa po 30 dniach, chyba że umiesz przesunąć czas. Typowa rada to popchnąć zegar systemowy do przodu, co wymaga uprawnień administratora i pociąga za sobą wszystkie inne programy na komputerze. To przesuwa jeden proces.

Jak szybko

Wybierasz całkowity mnożnik. Zegar aplikacji idzie tyle razy szybciej niż prawdziwy, licząc od momentu, w którym zaczyna się sesja.

MnożnikJedna realna minuta toDo czego
x60godzinazadania godzinowe, wygasanie sesji, czas życia tokenów
x1440dobaprzejścia dobowe, 30-dniowa wersja próbna w pół godziny
x4320030-dniowa wersja próbnaobejrzenie jej całej w czasie czytania tej strony
x525600rokodnowienia roczne, wygasanie certyfikatów
x1000000około 1,9 rokusufit
# Zacznij od prawdziwego teraz i leć w tempie doby na minutę
chrono run "C:\apps\test.exe" --mode x1440

# Zacznij od wybranej daty i przyspieszaj od niej
chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440

# Albo zatrzymaj zegar zupełnie
chrono run "C:\apps\test.exe" --mode frozen
Nagranie sesji sterującej inną aplikacją Windows. Lewe okno to Chrono Mock z zegarem aplikacji na 2038-01-19, który biegnie sześćdziesiąt razy szybciej, podczas gdy prawdziwy zegar obok przesuwa się o kilka sekund. Prawe okno to testowana aplikacja, której własny zapis sesji pokazuje start 2038-01-19 i czas trwania liczony w minutach, przy niecałym pół minucie w pokoju.
Prawdziwa sesja, prawdziwa aplikacja. Zwróć uwagę na prawe okno: testowany program zapisał własny start na 19 stycznia 2038, a jego sesja trwa minuty, podczas gdy zegar w pokoju przesunął się o sekundy. Prędkość zmienia się w trakcie, bez restartowania czegokolwiek.

Rzecz, która zaskakuje: zegary są dwa

Przyspieszenie zegara ściennego - tego, co zwraca DateTime.Now i jego odpowiedniki - samo w sobie nie przyspiesza odliczania. To dwa różne pytania, które aplikacja może zadać systemowi, a mnóstwo oprogramowania mierzy „trzydzieści dni" tym drugim, nie pierwszym.

Dlatego oś czasu trwania - liczniki taktów, uśpienia, czekania i timery - jest osobnym przełącznikiem:

  • --scale-duration przestawia na zegar sesji także liczniki taktów, uśpienia i timery, a czekania na obiekty liczy i zostawia im prawdziwą długość. Bez niego x1440 pędzi z kalendarzem do przodu, a pięciosekundowy timer nadal trwa pięć prawdziwych sekund - tylko timer nastawiony na konkretną datę i godzinę podąża za zegarem sesji w każdej sesji.
  • --scale-qpc dokłada skalowanie licznika wysokiej rozdzielczości. To tam monotonic w Pythonie 3.13+, Stopwatch w .NET i nanoTime w Javie czytają czas trwania. Domyślnie wyłączone, bo skalowanie go destabilizowało renderowanie w testach.

Jeśli mnożnik zdaje się nie robić nic z odliczaniem, to prawie zawsze jest to ten powód.

# Aplikacja z timerem: przyspiesz kalendarz I odliczania
chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration

# Aplikacja Pythona albo .NET mierząca czas licznikiem wysokiej rozdzielczości
chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc

Zmiana prędkości bez restartu

Mnożnik można zmienić w trakcie sesji, a zegar jest wtedy przekotwiczany, nie przeskakiwany, więc nigdy nie cofa się przy spadku prędkości. Zegarem można też skoczyć wprost - do przodu albo do tyłu, tak jak robi to laptop po synchronizacji z serwerem czasu, co jest przypadkiem psującym wszystko, co mierzy czas trwania bez zabezpieczenia.

# Leć x60, po dwóch sekundach przełącz na x1440
chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440

# Po pięciu sekundach skocz zegarem na wybrany moment
chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00

Czego nie zrobi

  • Nie rusza zegara systemowego. To jest sens, a nie ograniczenie - ale oznacza, że cokolwiek czyta czas z serwera, z bazy danych albo z innej maszyny, pozostaje nietknięte, a audyt powie ci, kiedy tak się dzieje.
  • Skok zmienia to, co aplikacja widzi, a nie to, kiedy się budzi. Uśpienia i timery już przekazane jądru zachowują długość, którą dostały przy nastawieniu. Większość aplikacji odpytuje zegar, więc skoki w praktyce działają - ale nie wszystkie.
  • Nie spowalnia czasu. Mnożniki to liczby całkowite od jedynki w górę plus zamrożony zegar w zerze.

Tego, czy cokolwiek z tego dotarło do twojej aplikacji, nie warto zakładać. Sesja to mówi →

Wypróbuj