Змусьте годинник одного застосунку йти швидше
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 і
його аналоги, — саме по собі не прискорює зворотний відлік. Це два різні
питання, які застосунок може поставити операційній системі, і безліч програм вимірюють «тридцять
днів» другим, а не першим.
Тому вісь тривалостей — лічильники тіків, затримки, очікування й таймери — це окремий перемикач:
--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
Чого він не робить
- Не чіпає системний годинник. У цьому сенс, а не обмеження, — але це означає, що все, що читає час із сервера, з бази даних чи з іншої машини, лишається недоторканим, і аудит скаже вам, коли так станеться.
- Стрибок змінює те, що бачить програма, а не те, коли вона прокидається. Затримки сну й таймери, уже передані ядру, зберігають тривалість, отриману під час встановлення. Більшість програм опитує годинник, тож стрибки на практиці працюють - але не в усіх.
- Час не сповільнюється. Множники — це цілі числа від одиниці й вище, плюс зупинений годинник на нулі.
Чи дійшло щось із цього до вашого застосунку — не те, що варто припускати. Про це скаже сесія →