Người ta thường biết rằng mọi người không thể nhận ra những thay đổi khi chúng xảy ra bên dưới 10ms sau hành động của họ. Khả năng đáp ứng này sẽ dẫn đến một trải nghiệm gần đây được mô tả là "linh hoạt". Nó đáng chú ý nhưng đối với người dùng thật khó để đặt tên cho nó.
Vì vậy, nếu bạn muốn sự hoàn hảo, hãy trì hoãn khoảng 15ms. Nếu bạn muốn thực sự tốt, hãy trì hoãn 100 ms. 100ms là trung bình 50ms, và chắc chắn sẽ vượt qua cho mọi người.
Ứng dụng và thời gian đáp ứng dự kiến cũng rất quan trọng. Cửa trượt hoặc thang máy được cung cấp dung sai rất lớn (vì đối tượng vật lý sẽ luôn mất nhiều thời gian hơn) trong khi giao diện máy bán vé không được cung cấp bất kỳ lúc nào.
Giới hạn trên cho bỏ phiếu sẽ là khoảng 1500ms. Xung quanh mọi người sẽ luôn nhận thấy nó chậm.
Dữ liệu này hoàn toàn là kinh nghiệm cá nhân như một game thủ và lập trình viên. YMMV và hãy nhớ rằng chỉ cần tự mình thử là cách tốt nhất để tìm hiểu cảm giác của nó. Câu trả lời "khoa học" duy nhất là <10 mili giây, ngoài ra đó là về khả năng nhận biết độ trễ (thay đổi theo từng người và từng thời điểm) và khả năng chịu đựng của người dùng.
Là một lưu ý phụ, bạn có thể thử dao động độ trễ để tiết kiệm thời gian sử dụng pin hoặc CPU khi giao diện không được sử dụng. Hành động của người dùng, bỏ phiếu càng nhanh. Khi ứng dụng đang hoạt động, hãy thăm dò ý kiến rất chậm. Tốt hơn để thăm dò ý kiến khi nó quan trọng!
loop()
khá chậm (ý tôi là quá chậm để có thể cung cấp phản hồi đủ nhanh cho người dùng cuối), bạn có thể sử dụng ISR khi thay đổi mức pin và cung cấp phản hồi ngay lập tức (nếu điều này có thể được tính toán nhanh) cho người dùng hoặc cung cấp cho anh ấy thông tin phản hồi tạm thời (ví dụ: đèn LED sáng) để cho anh ấy biết yêu cầu của anh ấy đã được công nhận và sẽ được xử lý ngay (trongloop()
); bạn sẽ cho phéploop()
bằng cách đặt một sốbool
biến toàn cục trong ISR.