Lorsqu'il s'agit de mises à jour de positionnement d'objets dans un jeu, le choix entre l'utilisation de System.currentTimeMillis () et System.nanoTime() devient crucial. Bien que les deux méthodes fournissent des mesures de temps, leur exactitude et leur précision diffèrent.
Précision fait référence à la plus petite unité de temps qui peut être mesurée, tandis que précision fait référence à la proximité de la mesure avec l'heure réelle. System.currentTimeMillis() renvoie des millisecondes, tandis que System.nanoTime() renvoie des nanosecondes, indiquant que System.nanoTime() est plus précis.
Comme mentionné dans la question, différents les systèmes d'exploitation ont une résolution temporelle variable. Windows a une résolution signalée de 50 ms, tandis que Mac/Linux ont une résolution d'environ 1 ms. Cela signifie que les mesures sous Windows utilisant System.currentTimeMillis() peuvent avoir jusqu'à 50 ms d'inexactitude.
Étant donné que l'objectif principal est d'obtenir les mesures les plus précises possibles pour positionnement des objets, il est recommandé d'utiliser System.nanoTime(). Il fournit une précision à la nanoseconde, permettant des mesures de temps plus précises et un mouvement plus fluide des objets dans votre jeu.
Pour démontrer, le code suivant mesure le temps d'exécution d'une tâche à l'aide de System.nanoTime( ):
long startTime = System.nanoTime(); // ... code to be measured ... long estimatedTime = System.nanoTime() - startTime;
En soustrayant le startTime de l'heure actuelle, on obtient le temps écoulé en nanoseconde précision.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!