Vs ความแม่นยำ ความแม่นยำ
สิ่งที่ฉันอยากรู้คือฉันควรใช้System.currentTimeMillis ()หรือSystem.nanoTime ()เมื่ออัปเดตตำแหน่งของวัตถุในเกมหรือไม่ การเปลี่ยนแปลงในการเคลื่อนไหวของพวกเขาเป็นสัดส่วนโดยตรงกับเวลาที่ผ่านไปนับตั้งแต่การโทรครั้งสุดท้ายและฉันต้องการให้แม่นยำที่สุดเท่าที่จะทำได้
ฉันได้อ่านแล้วว่ามีปัญหาการแก้ไขเวลาที่ร้ายแรงระหว่างระบบปฏิบัติการที่แตกต่างกัน (เช่น Mac / Linux มีความละเอียดเกือบ 1 ms ในขณะที่ Windows มีความละเอียด 50ms หรือไม่) ฉันทำงานแอพของฉันบน Windows เป็นหลักและความละเอียด 50ms ดูไม่ถูกต้อง
มีตัวเลือกที่ดีกว่าสองอย่างที่ฉันระบุไว้หรือไม่
ข้อเสนอแนะ / ความคิดเห็นใด ๆ
System.currentTimeMillis()
: pzemtsov.github.io/2017/07/23/the-slow-currenttimemillis.html
nanoTime
โดยปกติแล้วจะมีความแม่นยำมากกว่าในปัจจุบัน TimeMillis แต่ก็มีค่าใช้จ่ายที่ค่อนข้างแพงเช่นกันcurrentTimeMillis()
รันในนาฬิกา cpu เพียงไม่กี่ (5-6) ตัว nanoTime ขึ้นอยู่กับสถาปัตยกรรมพื้นฐานและสามารถเป็นนาฬิกา cpu ได้ 100+