Je voudrais savoir combien de temps il faut pour envoyer un message à un objet avec une précision d'au moins 1ms. Comment puis-je faire cela?Comment puis-je calculer avec précision le temps nécessaire pour appeler une fonction sur l'iPhone?
Comment puis-je calculer avec précision le temps nécessaire pour appeler une fonction sur l'iPhone?
Répondre
Voici ce que je fais:
NSDate * start = [NSDate date];
// do whatever I need to time
NSLog(@"time took: %f", -[start timeIntervalSinceNow]);
La sortie sera en secondes (avec une partie décimale). NSDate
s ont une résolution sur l'échelle des millisecondes, bien que je ne sache pas exactement comment ils sont précis.
Si le code que vous essayez de chronométrer est trop rapide, placez-le dans une boucle qui exécute le code une centaine de fois. (Cela suppose, bien sûr, que le code que vous chronométrez n'a aucun effet secondaire.)
Vous pouvez utiliser mach_absolute_time
pour mesurer en nanosecondes.
#import <mach/mach_time.h>
uint64_t startTime = 0;
uint64_t endTime = 0;
uint64_t elapsedTime = 0;
uint64_t elapsedTimeNano = 0;
mach_timebase_info_data_t timeBaseInfo;
mach_timebase_info(&timeBaseInfo);
startTime = mach_absolute_time();
//do something here
endTime = mach_absolute_time();
elapsedTime = endTime - startTime;
elapsedTimeNano = elapsedTime * timeBaseInfo.numer/timeBaseInfo.denom;
Utilisez dispatch_benchmark pour enregistrer votre temps d'exécution de la méthode en nanosecondes.
Il a une syntaxe beaucoup plus agréable que manuellement en boucle et en appelant mach_absolute_time() dispatch_benchmark fait partie de Grand Central Dispatch. Cette fonction n'est pas déclaré publiquement, de sorte que vous aurez à faire vous-même avant de l'utiliser:
extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));
J'utilise cela pour le temps d'exécution du journal:
size_t const blockIterations = 1; //block call count
uint64_t t = dispatch_benchmark(blockIterations, ^{ //your code inside block
[self TEST_processJSONDataRecordsWithCompletionHandler:^(id handler) {}];
});
NSLog(@" Avg. Runtime in nanoseconds : %llu ns", t);
Le crédit va à Benchmarking
- 1. Comment calculer avec précision le temps nécessaire à un programme Java pour écrire ou lire un fichier?
- 2. PHP: Comment tester le temps nécessaire pour faire une requête?
- 3. Comment appeler une fonction javascript sur onrowcommand?
- 4. Comment calculer le temps de chargement d'une application sur iPhone?
- 5. Calculer le temps de traitement
- 6. calculer le temps écoulé en flash
- 7. Calculer le temps d'exécution d'une requête SQL?
- 8. Comment appeler une fonction varargs avec un tableau en ActionScript?
- 9. Comment appeler une fonction dans jquery?
- 10. Pourcentage avec une précision variable
- 11. Comment appeler la fonction vb de javascript
- 12. Comment puis-je appeler une fonction JQuery?
- 13. comment appeler une autre fonction en javascript?
- 14. Appeler une fonction avec une liste d'arguments en python
- 15. Comment appeler une fonction dynamiquement en fonction d'un type d'objet
- 16. Comment puis-je appeler une fonction javascript pour exécuter quand innerHtml change avec Ajax?
- 17. appeler une fonction sur une page à partir d'un lien sur une autre page
- 18. Fonction de liste SQL Suppression de précision
- 19. calculer le temps de lecture d'un fichier .mp3
- 20. appeler une fonction VB.net depuis javascript
- 21. Calculer le produit avec LINQ
- 22. Comment calculer l'intervalle de temps à partir des horodatages?
- 23. C++ - Appeler une fonction dans une classe avec le même nom que la classe
- 24. Comment puis-je référencer un widget jQuery UI sur une page et y appeler une fonction?
- 25. comment obtenir des nombres pour avoir une précision de .05?
- 26. Comment appeler une fonction à partir de données binaires
- 27. Programme nécessaire pour afficher le graphique du fichier délimité par des tabulations sur le Web en temps réel
- 28. Problème appeler une fonction js de php
- 29. Comment puis-je appeler une fonction masquée en C++?
- 30. Comment appeler une fonction juste avant de revenir en C?
C'est ce que je cours. Personnellement, je m'en fous si c'est trop rapide car je ne m'inquiète que des goulots d'étranglement. =) – migs647