วัดเวลาใน Linux - เวลาเทียบกับนาฬิกาเทียบกับ getrusage เทียบกับ clock_gettime เทียบกับ gettimeofday เทียบกับ timespec_get?
ท่ามกลางฟังก์ชั่นจับเวลา, time, clock getrusage, clock_gettime, gettimeofdayและtimespec_getผมต้องการที่จะเข้าใจอย่างชัดเจนว่าพวกเขาจะดำเนินการและสิ่งที่มีค่าที่พวกเขากลับมาเพื่อที่จะทราบซึ่งในสถานการณ์ที่ผมต้องใช้พวกเขา แรกที่เราต้องฟังก์ชั่นประเภทกลับค่าผนังนาฬิกาเปรียบเทียบกับฟังก์ชั่นที่กลับมากระบวนการหรือหัวข้อค่า gettimeofdayส่งคืนค่านาฬิกาแขวนclock_gettimeส่งคืนค่านาฬิกาแขวนหรือค่ากระบวนการหรือเธรดขึ้นอยู่กับClockพารามิเตอร์ที่ส่งผ่านไป getrusageและclockคืนค่ากระบวนการ จากนั้นคำถามที่สองเกี่ยวกับการใช้งานฟังก์ชั่นเหล่านี้และเป็นผลให้ความถูกต้องของพวกเขา ฟังก์ชันเหล่านี้ใช้กลไกฮาร์ดแวร์หรือซอฟต์แวร์ใด ดูเหมือนว่าgetrusageจะใช้เฉพาะเคอร์เนลเห็บ (โดยทั่วไปจะมีความยาว 1 มิลลิวินาที) และด้วยเหตุนี้จึงไม่แม่นยำกว่า ms ถูกต้องหรือไม่ จากนั้นgetimeofdayฟังก์ชั่นการใช้งานดูเหมือนว่าจะถูกต้องมากที่สุดฮาร์ดแวร์พื้นฐานที่มีอยู่ ผลที่ตามมาคือความถูกต้องแม่นยำคือไมโครวินาที (ไม่สามารถมากไปกว่าเพราะ API) บนฮาร์ดแวร์ล่าสุด สิ่งที่เกี่ยวกับclockหน้าพูดคนเกี่ยวกับ "ประมาณ" มันหมายความว่าอะไร? สิ่งที่เกี่ยวกับclock_gettimeAPI อยู่ในระดับนาโนวินาทีหมายความว่าสามารถแม่นยำได้หรือไม่ถ้าฮาร์ดแวร์พื้นฐานอนุญาต? แล้วเรื่อง monotonicity ล่ะ? มีฟังก์ชั่นอื่น ๆ อีกหรือไม่?