9
votes

Comment accéder au temps système de plus de 1 seconde sur l'iPhone

Le temps de fonction du temps système (0) me donne une résolution de 1 seconde, non?

Y a-t-il une fonction fine-graine?

Je l'utilise pour déterminer l'intervalle de temps entre deux événements.

Une ligne de code m'aiderait grandement. Il est plus facile d'avoir quelque chose de concret pour accrocher le concept lorsque je regarde dans la documentation officielle.


3 commentaires

+1 pour mettre le code réel comme si j'ai demandé. Merci @zoul.


Saint-Fumes, ma question se présente déjà dans les résultats de Google pour "Temps système (0)"


Ceci est important: la valeur est renvoyée de CFABSoluTimeTetCurrent: est une double en unités de secondes, mais la résolution n'est pas en secondes. C'est sous-milliseconde. Je trouve la documentation Apple trompant sur ce point.


4 Réponses :


1
votes

Avez-vous recherché GetTimeOdday () ? C'est la fonction POSIX principale pour la synchronisation de la sous-deuxième résolution analogue à TIME () .

voir Développement d'applications natives pour l'iPhone pour une illustration de son utilisation. < / p>


0 commentaires

1
votes
self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval
                       target:self selector:@selector(drawView) userInfo:nil
                       repeats:YES];
That's a snippet from the OpenGL app template.  If you're looking for a high resolution timer, it's probably what you need.

0 commentaires

4
votes

nsdate a TimeIntervalsInceatedate: méthode, qui renvoie double ("précision de sous-milliseconde sur une plage de 10 000 ans" Apple dit). xxx


2 commentaires

Savez-vous comment utiliser cela pour faire la différence entre deux fois?


Utilisez TimeIntervalsinft1970, puis comparez. Il est donné en quelques secondes, mais avec de nombreux endroits décimaux - vous pouvez donc multiplier par 1000 pour obtenir msec, etc ...



17
votes

voir cfabsoluTimeTetCurrent :

CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
// do something you want to measure
CFAbsoluteTime end = CFAbsoluteTimeGetCurrent();
NSLog(@"operation took %2.5f seconds", end-start);


6 commentaires

Pouvez-vous utiliser cela dans une phrase?


Comment obtiendriez-vous des intervalles de moins d'une seconde de cela?


La valeur renvoyée est un double, simplement multiplier par 1000 pour obtenir des millisecondes ou se multiplier par 1E6 pour obtenir μs.


Je reçois un résultat 0 quand j'ai quitté la ligne "faire quelque chose" vide. Il s'avère que la minuterie ne peut pas mesurer un tel intervalle. Une fois que j'ai mis des déclarations entre deux, j'ai obtenu un résultat. Merci d'avoir mis du code de travail réel au lieu de référencer un nom de méthode ou un lien de document. Parfois, les docs sont trop résumés pour moi au début.


Je suis tellement habitué à cette fonction qu'au début, cela ne m'a pas eu pour moi pourquoi un exemple serait nécessaire, désolé. Heureux piratage!


Il est facile pour les programmeurs d'oublier combien de milliers de morceaux de connaissances qu'ils ont absorbés au fil du temps. Pour moi juste au cours des 4 derniers mois, les documents Apple sont passés de pages de bruit complètement opaques à des guides utiles mais boueux. Certaines choses que je reçois, pour le reste, je consulte un débordement de pile.