Sto cronometrando alcune cose, che non posso semplicemente inserire in un ciclo lungo. E ho bisogno di tempo per vedere quanto tempo ci vuole per completare, ma sembra che il timer abbia una precisione di 15-16 ms in java? Come posso aggirare questo?Precisione del timer in java
risposta
Hai provato a utilizzare System.nanoTime()?
Dal Javadoc:
restituisce il valore corrente delle più preciso timer di sistema disponibili, in nanosecondi.
Questo metodo può essere utilizzato solo per misurare il tempo trascorso e non è correlato a nessun'altra nozione di orario del sistema o dell'orologio. Il valore restituito rappresenta i nanosecondi poiché alcuni tempi fissi ma arbitrari (forse in futuro, quindi i valori potrebbero essere negativi). Questo metodo fornisce precisione in nanosecondi, ma non necessariamente precisione in nanosecondi. Non viene fornita alcuna garanzia sulla frequenza con cui i valori cambiano. Le differenze nelle chiamate successive superiori a circa 292 anni (2 nanosecondi) non calcolano in modo accurato il tempo trascorso a causa dell'overflow numerico.
Ad esempio, per misurare il tempo del codice necessario per eseguire:
lungo startTime = System.nanoTime(); // ... il codice misurato ... long estimateTime = System.nanoTime() - startTime;
Clocks and Timers - General Overview
programmazione Java API per gli orologi e timer La orologio assoluto "time-of-day" è rappresentata da il metodo System.currentTimeMillis(), che restituisce un millisecondo rappresentazione del tempo di orologio a muro in millisecondi dall'epoca. Come tale utilizza l'orologio "tempo del giorno" del sistema operativo. La risoluzione di aggiornamento di questo orologio è spesso la stessa dell'interrupt del timer (ad esempio 10 ms), ma su alcuni sistemi sono fissi, indipendentemente da la frequenza di interruzione.
L'orologio relativo-tempo è rappresentato dal metodo System.nanoTime(), che restituisce un tempo "free-running" in nanosecondi. Questa volta è utile solo per il confronto con altri valori nanoTime . Il metodo nanoTime utilizza l'orologio ad alta risoluzione disponibile sulla piattaforma e mentre il suo valore di ritorno è in nanosecondi, la risoluzione di aggiornamento è in genere solo microsecondi. Tuttavia, su alcuni sistemi non c'è altra scelta che usare la stessa fonte clock per currentTimeMillis() - per fortuna questa è rara e colpisce soprattutto i vecchi sistemi Linux, e Windows 98.
- 1. Timer di precisione in .NET
- 2. Precisione del timer OpenVMS, migliore della precisione millisecondo.
- 3. Qual è la massima precisione del timer in .NET?
- 4. Timer in Java Thread
- 5. Java Timer
- 6. Timer ad alta risoluzione (precisione millisecondo) in Go on Windows
- 7. In attesa del completamento di un timer in Java
- 8. Precisione esecutore pianificato Java
- 9. Java Swing Timer
- 10. pianificazione attività timer java
- 11. Do timer hanno una migliore precisione rispetto al sonno()
- 12. Come impostare un timer in Java?
- 13. Richiamo di precisione in lucene java
- 14. _.delay() - uccisione del timer
- 15. Valore doppio con precisione specifica in java
- 16. Java calcolo doppia perdere in precisione
- 17. Disabilitazione del timer EJB (GlassFish 3.1, Java EE 6)
- 18. Java BigDecimal problemi di precisione
- 19. Confronto del timer con DispatcherTimer
- 20. Più precisione del doppio in swift
- 21. Come trovare l'origine del thread del timer?
- 22. Problema nella creazione del lavoro del timer
- 23. : Precisione del punto decimale sull'asse
- 24. Timer e TimerTask contro Thread + sleep in Java
- 25. Verifica della cancellazione di un timer Java
- 26. Java doppia precisione costante moltiplicazione/divisione
- 27. Timer in AudioPlaybackAgent
- 28. . Thread max simultanei timer timer
- 29. spettacolo timer in etichetta
- 30. Creazione di un promemoria timer ripetuto in Java
eh, io amo quella frase: "Le differenze nelle chiamate successive che si estendono su una distanza superiore a circa 292 anni (263 nanosecondi) non calcolano in modo accurato il tempo trascorso a causa dell'overflow numerico." Ci dovrebbe essere un concorso per il programma software più longevo senza interruzioni/malfunzionamenti. –