Hỏi về giới hạn của API performance.now() trong Javascript?
Javascript có một API Monotonic Clock (Đồng hồ đơn điệu) khá hay là performance.now, không bị phụ thuộc vào đồng hồ hệ thống (user không thể phá được bằng cách vặn thời gian, khác với Date.now).
Mình thấy có sự tương đồng với nhiều API Monotonic Clock trên Windows, ví dụ 1 cái là GetTickCount.
Nhưng tất cả các API kiểu này trên Windows thì trong documentation đều ghi rất rõ ràng là có giới hạn (Giới hạn của HĐH, chưa kể kiểu dữ liệu trả về thì có số bit giới hạn), như GetTickCount đo thời gian trôi qua kể từ khi HĐH khởi động, tối đa là 49,7 ngày, sau đó thì bị “wrap” ngược về zero. Nhưng documentation của performance.now thì lại chẳng ghi giới hạn gì cả??? Hàm này trả về một số thực chấm động double, rõ ràng bản thân kiểu số này có giới hạn mà.
Vậy mọi người có thể cho mình rõ thêm vụ này được không? Và có thể dùng performance.now liên tục hàng tháng trời một cách an toàn không?
https://www.w3.org/TR/hr-time-2/#dom-domhighrestimestamp
~> Vậy là max value của Double :3
Và là một số rất rất bự.
Như GetTickCount đếm millisecond chỉ tớ 49.7 ngày là do DWORD = 32 bit = 2^32 ~ 4b
Và 49.7 ngày = 49.7 * 1000 * 60 * 60 * 24 ~ 4b
Trong khi GetTickCount64 khắc phục được điều này.
Tức là do giới hạn quá to (có khi đến ngày tận thế) nên không cần phải ghi ra à?
Theo mình thì nghĩ chắc là vậy rồi
Như GetTickCount64 nó cũng chả ghi giới hạn.
Với lại một phần mình nghĩ, do DWORD giới hạn, nên số lượng thời gian đo bị giới hạn và nó quá ít so với thời gian một máy tính cho thể chạy. Nên cần phải thông báo ra cho lập trình viên biết để xủ lý.