La mesure du temps écoulé en lua (+love2D)
Je suis en train de mesurer le temps de mon exécution de code avec le système d'exploitation.la fonction time() et de l'afficher avec l'AMOUR-cadre. Mais, à ma grande surprise, les temps changent...
Mon code est:
function foo()
start_time = os.time()
<some code>
end_time = os.time()
elapsed_time = os.difftime(end_time-start_time)
love.graphics.print('start time: ' .. start_time .. 's', 12, 12)
love.graphics.print('end time: ' .. end_time .. 's', 12, 22)
love.graphics.print('time elapsed: ' .. elapsed_time .. 's', 12, 32)
end
Quand je quitte la fenêtre avec mes graphiques ouvrir les temps changent (de début et de fin de croissance et la différence varie entre 1 et 2) - donc, la première question est de savoir comment cela se fait-il si le système d'exploitation.time() renvoie un nombre. Et aussi est-ce une bonne façon de mesurer le temps d'exécution de mon application?
Vous devez vous connecter pour publier un commentaire.
start
etend
doit toujours être de plus en plus, à moins que le temps s'arrête, dans ce cas, nous sommes tous en difficulté.Le delta entre eux va changer en fonction de combien de temps
<some code>
prend à exécuter.os.time
généralement retourne le nombre de secondes à partir d'un point arbitraire dans le passé (généralement 1/1/1970 00:00:00). Ce n'est pas garanti (il est mis en œuvre en termes de Ctime
fonction qui ne fait pas de telles garanties). Mais il faut toujours avancer, ou il n'est pas vraiment vous donner le temps, non?BTW, vous êtes à l'aide de
difftime
mal. Vous êtes censé passer deux valeurs, et il vous donne la différence entre eux. Vous êtes le passant d'une valeur. Il devrait barf, mais au contraire, il semble être de retour à la première valeur, qui, dans votre cas accidentellement fonctionne parce que vous arrive d'être sur une machine oùdifftime
est effectivement t2-t1. Sur d'autres systèmes, cela peut casser. Vous devez modifier l'appel de:start_time = os.time()
vous écraser la précédente instantané avec un nouveau. Je n'ai pas mentionné qu'avant, parce que c'est.... très de base utilisation de variables qui, je suppose que tu le savais déjà.D'abord, les informations sur
os.time()
Étape par étape de l'itération:
start_time
magasins le temps que nombre.end_time
stocke la valeur numérique de temps maintenant. Ça va être un nombre supérieur ou égal àstart_time
.os.difftime()
appel(qui est syntaxiquement incorrect).La valeur de
start
etend
sera modifiée à chaque itération que votre système a avancé un peu dans l'avenir, étant donné l'époque. Aussi, la valeur deelapsed_time
est rapporté que 1 ou 2 secondes, ce qui est le temps pris par votre code à exécuter lui-même.Alternativement, vous pouvez utiliser le Lua est
os.clock()
de retour le temps(en secondes) pour l'exécution de votre code.Essayer l'amour.minuterie.getTime qui 0.9.0 renvoie une heure précise. Ce lien est un exemple de comment le temps quelque chose.
C'est OK pour la durée relative (en soustrayant à comparer). Si vous voulez plus de temps absolu, essayez quelque chose comme: