มีหลายวิธีที่จะได้รับการประทับเวลาใน nodejs เช่น:
1. วันที่ใหม่ (). getTime ()
2. วันที่ตอนนี้ ()
3. process.uptime ()
4. process.hrtime ()
หากคุณต้องการได้รับการประทับเวลาคุณสามารถใช้วิธีการเหล่านี้ แล้ววิธีการเหล่านี้แตกต่างกันอย่างไร?
วันที่ใหม่ (). getTime () และ date.now ()
วิธีการเหล่านี้ผ่านจำนวนมิลลิวินาทีของระบบที่ใช้สภาพแวดล้อมในโหนด ผลของวิธีการเขียน +วันที่ใหม่ () นั้นเหมือนกับผลกระทบของ วันที่ใหม่ (). getTime ()
ในสถานการณ์ที่ใช้การประทับเวลาบ่อยครั้งคุณต้องให้ความสนใจกับประสิทธิภาพของวิธีการ ในบรรดาวิธีการเหล่านี้ Date.now () มีประสิทธิภาพที่ดีที่สุด คุณสามารถทดสอบด้วยรหัสเล็กน้อย:
var t1 = วันที่ใหม่ (). getTime (); var t2 = t1; var i = 0, count = 10,000,000, interval = 0; สำหรับ (i = 0; i <count; i ++) {t2 = วันที่ใหม่ (). getTime (); Interval = (t2 - t1);} interval = (t2 - t1); console.log ('【วันที่ใหม่ (). getTime () 】ช่วงเวลา:', ช่วงเวลา); t1 = วันที่ใหม่ (). getTime (); สำหรับ (i = 0; i <count; i ++) {t2 =+วันที่ใหม่; Interval = (t2 - t1);} interval = (t2 - t1); console.log ('【+วันที่ใหม่】ช่วงเวลา:', Interval); t1 = วันที่ใหม่ (). getTime (); สำหรับ (i = 0; i <count; i ++) {t2 = วันที่ (); Interval = (t2 - t1);} interval = (t2 - t1); console.log ('【 date.now () 】ช่วงเวลา:', Interval);ผลลัพธ์ผลลัพธ์:
【วันที่ใหม่ (). getTime () 】ช่วงเวลา: 1583
【+วันที่ใหม่】ช่วงเวลา: 2189
【 date.now () 】ช่วงเวลา: 891
หากคุณเพิ่งได้รับการประทับเวลาจากนั้นใช้ date.now () เป็นวิธีที่ดีที่สุดในการทำ แต่ถ้าคุณต้องการคำนวณความแตกต่างของเวลาวิธีการเหล่านี้จะมีปัญหาบางอย่าง: บางครั้งอาจมีการเรียกกลับเล็กน้อยในช่วงเวลาของระบบของสภาพแวดล้อมการทำงานดังนั้นความแตกต่างของเวลาที่ได้รับนั้นไม่ถูกต้อง
process.hrtime ()
วิธีนี้คือการได้รับวัตถุการประทับเวลาที่แน่นอนตามจุดเวลาที่ผ่านมาและเวลาจากปัจจุบัน: [วินาที, นาโนวินาที]
> process.hrtime () [3197146, 5635552237]
วิธีนี้ไม่มีส่วนเกี่ยวข้องกับเวลาของระบบดังนั้นจะไม่ได้รับผลกระทบจากนาฬิกาดริฟท์ระบบและจะไม่มีข้อบกพร่องเมื่อใช้ในการคำนวณความแตกต่างของเวลา
แต่ทุกอย่างอยู่ที่นั่นเสมอ - -
จะเกิดอะไรขึ้นถ้าใช้ในสถานที่ที่เรียกบ่อย ๆ ?
var t1 = วันที่ใหม่ (). getTime (); var t2 = t1; var i = 0, count = 10,000,000, interval = 0; var hrtime1 = process.hrtime (); var hrtime2 = hrtime1; t1 = วันที่ใหม่ () วันที่ (). getTime (); interval = parseInt (hrtime2 [0] * 1E3 + HRTIME2 [1] * 1E -6); console.log ('【 hrtime 】ช่วงเวลา:', Interval, T2 - T1); 【hrTime】interval: 6412 6413 ถ้าคุณจำได้ถูกต้องจำนวนการสร้างสรรค์เท่ากัน วันที่ตอนนี้ () ด้านบนประมาณ 900ms!
process.hrtime () ช้าเกินไป! - -
ปรากฎว่าเมื่อ NodeJS จัดการเวลาที่มีความแม่นยำสูงการคำนวณค่อนข้างซับซ้อนใช้ทรัพยากรระบบจำนวนมากและมีความเร็วช้าดังนั้นวิธีนี้จึงไม่เหมาะสำหรับการใช้งานที่มีความถี่สูง โปรดดู process.uptime () ด้านล่าง
process.uptime ()
ฟังก์ชั่นนี้ใช้เวลาเริ่มต้นใช้งาน NodeJS เพื่อรับการประทับเวลาครั้งที่สองซึ่งแม่นยำถึงมิลลิวินาที:
Process.uptime
อินพุต: 6.419
ฟังก์ชั่นนี้ขึ้นอยู่กับเวลาเริ่มต้นโหนดและจะไม่ได้รับผลกระทบจากการดริฟท์นาฬิการะบบและเหมาะสำหรับการคำนวณความแตกต่างของเวลา
ประสิทธิภาพของการโทรหลายครั้งเป็นอย่างไร?
var t1 = วันที่ใหม่ (). getTime (); var t2 = t1; var i = 0, count = 10000000, interval = 0; t1 = process.uptime ()*1000; สำหรับ (i = 0; i <count; i ++) {t2 = process.uptime ()*1000; // interval = (t2 - t1);} interval = (t2 - t1); console.log ('【 process.uptime () 】ช่วงเวลา:', ช่วงเวลา);เอาท์พุท: [process.uptime ()] ช่วงเวลา: 954
เมื่อเทียบกับ process.hrtime () มันสร้างประสิทธิภาพจำนวนมาก ~
อย่านับอย่างถูกต้องมันเร็ว!
จากนั้นคุณต้องคำนวณความแตกต่างของเวลาที่ความถี่สูง!
ข้างต้นเป็นเรื่องเกี่ยวกับ nodejs ที่ได้รับความแตกต่างระหว่างการประทับเวลาและเวลา ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคนเมื่อใช้ nodejs