SORU
9 Aralık 2008, Salı


Sistem.currentTimeMillis vs Sistemi.nanoTime

Doğruluk Vs. Hassas

Bilmek istiyorum ne kullanmalıyım olsunSistem.() currentTimeMillisyaSistem.() nanoTimebenim oyun benim nesnenin pozisyonları güncelleme ne zaman? Hareket onların değişim son çağrı bu yana geçen süre ile doğru orantılıdır ve mümkün olduğu kadar net olmak istiyorum.

Farklı işletim sistemleri arasında zaman-çözünürlük çok ciddi sorunları olduğunu okudum (yani Mac / Linux Windows 50ms bir çözüm varken neredeyse 1 ms bir çözüm var mı??). Birincil çözünürlük oldukça yanlış görünüyor windows ve 50ms benim apps koşuyorum.

İki daha iyi seçenekler bir liste var mı?

Herhangi bir öneri / yorum?

CEVAP
9 Aralık 2008, Salı


Sadece son derece hassas ölçümler için arıyorsanızgeçen zaman, System.nanoTime() kullanın. System.currentTimeMillis() mutlak zaman başlangıcından beri geçen milisaniye cinsinden en doğru mümkün geçen zamanı verir, ama System.nanoTime() nanosaniye hassas bir zaman, bazı keyfi noktasına göre verir.

Java Belgeleri:

public static long nanoTime()

Döner en hassas mevcut sistem zamanlayıcı akım değeri, nanosaniye.

Bu yöntem, yalnızca için kullanılabilir ölçü ve zaman değil geçen sistemin herhangi bir kavram ile ilgili veya duvar saati. Döndürülen değer bazı beri nanosaniye temsil eder sabit ama keyfi bir zaman (belki de içinde değerler olabilir o yüzden gelecek, negatif). Bu yöntem sağlar nanosaniye hassas, ama değil mutlaka nanosaniye doğruluğunu. Hayır garanti nasıl yapılır sık değerlerini değiştirin. Farklılıklar daha fazla yayılan birbirini izleyen aramalar yaklaşık 292 yıl daha (263 nanosaniye) doğru değil geçen zaman sayısal nedeniyle hesaplamak taşma.

Örneğin, bazı kod çalıştırmak için ne kadar sürdüğünü ölçmek için:

long startTime = System.nanoTime();    
// ... the code being measured ...    
long estimatedTime = System.nanoTime() - startTime;

Ayrıca bakınız: JavaDoc System.nanoTime() ve daha fazla bilgi için JavaDoc System.currentTimeMillis().

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • Gali B

    Gali B

    1 EYLÜL 2006
  • Maschine Tutorials

    Maschine Tut

    15 ŞUBAT 2011