Chrono Mock
JazykČeština

Nechte hodiny jedné aplikace běžet rychleji

Třicetidenní zkušební doba vyprší za 30 dní, pokud neumíte posunout čas. Obvyklá rada je posunout systémové hodiny dopředu, což vyžaduje práva správce a táhne to s sebou všechny ostatní programy na počítači. Tohle místo toho posouvá jeden proces.

Jak rychle

Zvolte celočíselný násobitel. Hodiny aplikace postupují tolikrát rychleji než skutečné, od okamžiku, ve kterém sezení začíná.

NásobitelJedna skutečná minuta se stáváK čemu je to dobré
x60hodinouhodinové úlohy, vypršení sezení, životnost tokenů
x1440dnemdenní přechody, 30denní zkušební doba za půl hodiny
x4320030denní zkušební dobousledování konce celé zkušební doby, zatímco tohle čtete
x525600rokemroční obnovení, vypršení certifikátů
x1000000asi 1,9 rokustrop
# Začít na skutečném čase teď a běžet den za minutu
chrono run "C:\apps\test.exe" --mode x1440

# Začít ve zvoleném datu a zrychlovat od něj
chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440

# Naopak úplně zastavit hodiny
chrono run "C:\apps\test.exe" --mode frozen
Záznam sezení, které řídí další aplikaci pro Windows. Levé okno je Chrono Mock s hodinami aplikace na 2038-01-19 stoupajícími šedesátinásobnou skutečnou rychlostí, zatímco skutečné hodiny vedle se pohnou o pár vteřin. Pravé okno je testovaná aplikace, jejíž vlastní záznam sezení ukazuje, že začala 2038-01-19 a běží minuty oproti sotva půl minutě v místnosti.
Skutečné sezení, řídící skutečnou aplikaci. Všimněte si pravého okna: testovaný program si zaznamenal vlastní start jako 19. ledna 2038 a jeho sezení trvá minuty, zatímco hodiny v místnosti se pohnuly o vteřiny. Rychlost se mění za běhu, bez restartování čehokoli.

Část, na které se lidé nachytají: hodiny jsou dvoje

Zrychlení kalendářních hodin - toho, co vrací DateTime.Now a jeho ekvivalenty - samo o sobě nezrychlí odpočet. To jsou dvě různé otázky, které může aplikace operačnímu systému položit, a spousta softwaru měří „třicet dní“ tou druhou, ne první.

Osa trvání - počty ticků, uspání, čekání a časovače - je proto samostatný přepínač:

  • --scale-duration převádí na hodiny sezení i čítače tiků, uspání a časovače, zatímco čekání na objekty se počítají a zachovávají svou skutečnou délku. Bez něj x1440 žene kalendář dopředu, zatímco pětisekundový časovač pořád trvá pět skutečných sekund - jen časovač nastavený na konkrétní datum a čas sleduje hodiny sezení v každém sezení.
  • --scale-qpc navíc škáluje čítač s vysokým rozlišením. Tam čtou uplynulý čas monotonic z Pythonu 3.13+, Stopwatch z .NET a nanoTime z Javy, a je ve výchozím stavu vypnutý, protože jeho škálování při testování destabilizovalo vykreslování.

Pokud se zdá, že násobitel odpočtu nic nedělá, je to téměř vždy kvůli tomuto.

# Aplikace s časovačem: zrychlit kalendář I odpočty
chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration

# Aplikace v Pythonu nebo .NET měřící uplynulý čas na čítači s vysokým rozlišením
chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc

Změna rychlosti bez restartu

Násobitel lze uprostřed sezení změnit a hodiny se znovu ukotví, ne skočí, takže nikdy nejdou zpět, když rychlost klesne. Hodinami můžete také rovnou skočit - dopředu, nebo zpět tak, jak to dělá notebook po opětovné synchronizaci s časovým serverem, což je případ, který rozbije cokoli, co měří uplynulý čas bez pojistky.

# Běžet na x60, pak po dvou vteřinách přepnout na x1440
chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440

# Spustit a po pěti vteřinách skočit hodinami na zvolený okamžik
chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00

Co neumí

  • Nesahá na systémové hodiny. To je smysl, ne omezení - ale znamená to, že cokoli, co čte čas ze serveru, z databáze nebo z jiného počítače, zůstává nedotčeno, a audit vám řekne, když se to stane.
  • Skok mění to, co aplikace vidí, ne kdy se probudí. Uspání a časovače už předané jádru si ponechávají délku, kterou dostaly při nastavení. Většina aplikací se hodin dotazuje, takže skoky v praxi fungují - ale ne u všech.
  • Nezpomaluje čas. Násobitele jsou celá čísla od jedné výše plus zastavené hodiny na nule.

Zda se něco z toho dostalo k vaší aplikaci, není věc k předpokládání. Sezení to řekne →

Vyzkoušejte