นาฬิกาจับเวลา (ความแม่นยำมิลลิวินาที
นาฬิกาจับเวลาในเบราว์เซอร์โดยใช้ performance.now() สำหรับการจับเวลาที่ปราศจาก jitter เริ่ม หยุดชั่วคราว ดำเนินการต่อ จับ lap และรีเซ็ต แต่ละ lap แสดงการแยก (เดลต้าจากครั้งก่อน) บวกเวลาสะสม
วิธีการทำงาน
ทำไมนาฬิกาจับเวลานี้แม่นยำ
นาฬิกาจับเวลาในเบราว์เซอร์ส่วนใหญ่ใช้ Date.now() และ setInterval ซึ่งสามารถเบี่ยงเบนได้หลายสิบมิลลิวินาทีระหว่างเซสชัน การใช้งานนี้ใช้ performance.now() — นาฬิกา monotonic ที่ไม่กระโดดถอยหลังเมื่อปรับนาฬิการะบบ รวมกับ requestAnimationFrame สำหรับการอัปเดตการแสดงผล ความแม่นยำอยู่ภายใน ±1 ms
หากคุณสลับแท็บ เวลาที่แสดงอาจแข็งตัวเล็กน้อยเพราะเบราว์เซอร์จำกัดงานเบื้องหลัง นาฬิกาภายในยังคงทำงานต่อไปอย่างถูกต้อง — เมื่อคุณสลับกลับ การแสดงผลจะตามเวลาที่ผ่านไปจริง
เวลา lap และเวลาแยก
เมื่อคุณกด Lap เวลาสะสมปัจจุบันจะถูกบันทึก การแยกที่แสดงคือเดลต้าจาก lap ก่อนหน้า: ในการวิ่ง 5×400m แต่ละการแยกคือเวลาช่วง 400m ในขณะที่สะสมคือเวลาทั้งหมดตั้งแต่เริ่ม
ผู้ใช้รายการ lap ส่วนใหญ่สนใจการแยก ไม่ใช่สะสม เราแสดงทั้งคู่ สะสมยังทำให้ง่ายต่อการระบุช่วงเดี่ยวที่ดีที่สุด — มีประโยชน์สำหรับนักกีฬาที่ติดตามความสม่ำเสมอของช่วง
การใช้งานทั่วไป
กีฬา: ติดตามเวลา lap สำหรับการวิ่ง การว่ายน้ำ ช่วงปั่นจักรยาน เล็กกว่าดีกว่า ความสม่ำเสมอระหว่างการแยกเป็นสัญญาณของการตั้งวิ่งที่ดี
การทำอาหาร: จับเวลาหลายขั้นตอนพร้อมกันโดยใช้ lap เป็น 'จุดตรวจ' (เพิ่มส่วนผสม เริ่มพักแป้ง ฯลฯ)
การเรียน/งาน: timeboxing เซสชันงานที่มุ่งเน้น จับคู่กับตัวจับเวลา Pomodoro ของเราสำหรับการพักที่มีโครงสร้าง
การจับเวลากระบวนการ: วัดระยะเวลาของงานใดๆ — การสร้างซอฟต์แวร์ การป้อนข้อมูลด้วยตนเอง การแก้ไขการสนับสนุนลูกค้า ใช้รายการ lap ที่เป็นมิตรกับการส่งออกสำหรับการตรวจสอบในภายหลัง
คำถามที่พบบ่อย
›ตัวจับเวลายังคงทำงานหากฉันปิดแท็บหรือไม่?
ไม่ — การปิดแท็บล้างสถานะในหน่วยความจำ เพื่อรักษาเซสชันการจับเวลายาว ให้ถ่ายภาพหน้าจอของการแสดงผลที่กำลังทำงานหรือคัดลอกรายการ lap ก่อนปิด
›ความแม่นยำมิลลิวินาทีในทางปฏิบัติเป็นอย่างไร?
ความละเอียดของ performance.now() ขึ้นอยู่กับเบราว์เซอร์: เบราว์เซอร์ส่วนใหญ่จำกัดที่ 1ms หรือ 0.1ms ด้วยเหตุผลด้านความปลอดภัย (การบรรเทาการโจมตีการจับเวลา) เพียงพอสำหรับการจับเวลาในระดับมนุษย์ — แม่นยำกว่าเวลาตอบสนองของมนุษย์ (~250ms) มาก
›ทำไมการแสดงผลอัปเดตที่ 60fps แต่แสดงมิลลิวินาที?
นาฬิกาภายในแม่นยำ การแสดงผลถูกเรนเดอร์ ~60 ครั้งต่อวินาทีดังนั้นคุณเห็นฟิลด์มิลลิวินาทีอัปเดตอย่างราบรื่น แต่ละเฟรมคำนวณค่าที่ผ่านไปล่าสุดจาก performance.now()
›ฉันสามารถบันทึกเซสชัน lap ได้หรือไม่?
ไม่โดยตรง — คัดลอกรายการ lap ด้วยตนเอง การบันทึกเซสชันไปยังที่จัดเก็บในเครื่องอยู่ใน roadmap
›ความแตกต่างระหว่างนี้และนาฬิกาจับเวลาโทรศัพท์คืออะไร?
อยู่ในเบราว์เซอร์ ไม่ต้องติดตั้งแอป แม่นยำเท่ากันสำหรับการจับเวลาในระดับมนุษย์ นาฬิกาจับเวลาโทรศัพท์อยู่รอดจากการล็อคหน้าจอ แท็บเบราว์เซอร์ต้องเปิดอยู่ (แต่ไม่ต้องการโฟกัส)
›ข้อมูลถูกส่งไปที่ใด?
ไม่ ทุกอย่างทำงานในเครื่อง ไม่มี laps หรือเวลาใดๆ ถูกส่ง
›ทำไม lap ของฉันแสดง 0 มิลลิวินาที?
ถ้าคุณกด Lap ทันทีหลังจากเริ่ม เวลาที่ผ่านไปอาจปัดลงเป็น 0 ด้วยความแม่นยำของการแสดงผล รันอย่างน้อยเศษเสี้ยววินาทีระหว่าง laps
›วัดเหตุการณ์ย่อยวินาทีได้หรือไม่?
ได้ ลงไปถึง ~1ms สำหรับการจับเวลานาโนวินาที (การ benchmark ชิป) คุณต้องการเครื่องมือที่แตกต่างกัน แต่สำหรับเหตุการณ์ที่มนุษย์สังเกตได้นี่แม่นยำพอ
เครื่องมือที่เกี่ยวข้อง
อัปเดตล่าสุด: