Chrono Mock
Ngôn ngữTiếng Việt

Cho đồng hồ của một ứng dụng chạy nhanh hơn

Một bản dùng thử 30 ngày cần 30 ngày để hết hạn, trừ khi bạn dịch chuyển được thời gian. Lời khuyên thông thường là đẩy đồng hồ hệ thống tiến lên, việc này cần quyền quản trị viên và kéo theo mọi chương trình khác trên máy. Công cụ này dịch chuyển một tiến trình duy nhất.

Nhanh đến mức nào

Chọn một hệ số nhân là số nguyên. Đồng hồ của ứng dụng tiến nhanh gấp chừng ấy lần đồng hồ thật, từ bất cứ thời điểm nào mà phiên bắt đầu.

Hệ số nhânMột phút thật trở thànhHữu ích cho
x60một giờtác vụ theo giờ, hết thời gian chờ phiên, tuổi thọ token
x1440một ngàychuyển ngày, bản dùng thử 30 ngày trong nửa giờ
x43200một bản dùng thử 30 ngàyxem cả bản dùng thử kết thúc trong lúc bạn đọc dòng này
x525600một nămgia hạn hằng năm, hết hạn chứng chỉ
x1000000khoảng 1,9 nămmức trần
# Bắt đầu từ giờ thật bây giờ, và chạy một ngày mỗi phút
chrono run "C:\apps\test.exe" --mode x1440

# Bắt đầu ở một ngày đã chọn và tăng tốc từ đó
chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440

# Hoặc giữ đồng hồ đứng yên hoàn toàn
chrono run "C:\apps\test.exe" --mode frozen
Một bản ghi phiên đang điều khiển một ứng dụng Windows khác. Cửa sổ bên trái là Chrono Mock với đồng hồ của ứng dụng ở ngày 2038-01-19 đang tăng với tốc độ gấp sáu mươi lần thật, trong khi đồng hồ thật bên cạnh chỉ nhích vài giây. Cửa sổ bên phải là ứng dụng được kiểm thử, có nhật ký phiên riêng cho thấy nó bắt đầu vào 2038-01-19 và đã chạy được vài phút so với chỉ nửa phút ngoài phòng.
Một phiên thật đang điều khiển một ứng dụng thật. Hãy chú ý cửa sổ bên phải: chương trình được kiểm thử ghi lại thời điểm bắt đầu của chính nó là 19 tháng 1 năm 2038, và phiên của nó đã kéo dài vài phút trong khi đồng hồ trong phòng chỉ nhích vài giây. Tốc độ được đổi khi nó đang chạy, mà không phải khởi động lại gì cả.

Phần khiến người ta vấp: có hai đồng hồ

Tăng tốc đồng hồ treo tường - thứ mà DateTime.Now và các hàm tương đương trả về - tự nó không làm bộ đếm ngược nhanh lên. Đó là hai câu hỏi khác nhau mà một ứng dụng có thể hỏi hệ điều hành, và rất nhiều phần mềm đo “ba mươi ngày” bằng câu thứ hai chứ không phải câu thứ nhất.

Vì vậy trục khoảng thời gian - số tick, sleep, chờ và bộ hẹn giờ - là một công tắc riêng:

  • --scale-duration cũng đưa bộ đếm tick, các lệnh ngủ và bộ hẹn giờ lên đồng hồ phiên, còn các lệnh chờ đối tượng được đếm và giữ nguyên độ dài thật. Không có nó, x1440 đẩy lịch chạy tới trong khi một bộ hẹn giờ năm giây vẫn mất năm giây thật - chỉ bộ hẹn giờ đặt vào một ngày giờ cụ thể mới theo đồng hồ phiên trong mọi phiên.
  • --scale-qpc còn nhân tỷ lệ cả bộ đếm độ phân giải cao. Đó là nơi monotonic của Python 3.13+, Stopwatch của .NET và nanoTime của Java đọc thời gian đã trôi, và nó tắt theo mặc định vì nhân tỷ lệ nó làm mất ổn định việc kết xuất khi kiểm thử.

Nếu hệ số nhân dường như chẳng làm gì với một bộ đếm ngược, gần như luôn là vì lý do này.

# Một ứng dụng hẹn giờ: tăng tốc lịch VÀ các bộ đếm ngược
chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration

# Một ứng dụng Python hoặc .NET đo thời gian đã trôi trên bộ đếm độ phân giải cao
chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc

Đổi tốc độ mà không khởi động lại

Hệ số nhân có thể đổi giữa phiên, và đồng hồ được neo lại chứ không bị nhảy, nên nó không bao giờ chạy lùi khi tốc độ giảm. Bạn cũng có thể nhảy thẳng đồng hồ - tiến, hoặc lùi như cách một laptop làm sau khi đồng bộ lại với máy chủ thời gian, trường hợp làm hỏng mọi thứ đo thời gian đã trôi mà không có biện pháp bảo vệ.

# Chạy ở x60, rồi chuyển sang x1440 sau hai giây
chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440

# Chạy, rồi nhảy đồng hồ đến một thời điểm đã chọn sau năm giây
chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00

Những gì nó sẽ không làm

  • Nó không đụng đến đồng hồ hệ thống. Đó là mục đích, không phải hạn chế - nhưng nó có nghĩa là bất cứ thứ gì đọc giờ từ máy chủ, cơ sở dữ liệu hay máy khác đều không bị ảnh hưởng, và kiểm toán sẽ cho bạn biết khi điều đó xảy ra.
  • Một cú nhảy thay đổi những gì ứng dụng thấy, không phải lúc nó thức dậy. Các lệnh ngủ và bộ hẹn giờ đã giao cho nhân giữ nguyên độ dài nhận được khi được đặt. Hầu hết ứng dụng hỏi đồng hồ liên tục, nên các cú nhảy hoạt động trong thực tế - nhưng không phải với tất cả.
  • Nó không làm chậm thời gian. Các hệ số nhân là số nguyên từ một trở lên, cộng thêm đồng hồ đóng băng ở không.

Việc có thứ nào trong số đó đến được ứng dụng của bạn hay không không phải điều để giả định. Phiên sẽ nói cho bạn →

Dùng thử