Y a-t-il un moyen de déterminer combien de temps a besoin d’une méthode d’exécution (en millisecondes) ?
Réponses
Trop de publicités?Pour affiner le grain de timing sur OS X, vous devez utiliser mach_absolute_time( )
déclaré en <mach/mach_time.h>
:
#include <mach/mach_time.h>
#include <stdint.h>
// Do some stuff to setup for timing
const uint64_t startTime = mach_absolute_time();
// Do some stuff that you want to time
const uint64_t endTime = mach_absolute_time();
// Time elapsed in Mach time units.
const uint64_t elapsedMTU = endTime - startTime;
// Get information for converting from MTU to nanoseconds
mach_timebase_info_data_t info;
if (mach_timebase_info(&info))
handleErrorConditionIfYoureBeingCareful();
// Get elapsed time in nanoseconds:
const double elapsedNS = (double)elapsedMTU * (double)info.numer / (double)info.denom;
Bien sûr, les mises en garde habituelles sur fine mesures s'appliquent; vous êtes probablement mieux de l'invocation de la routine en vertu de tester de nombreuses fois, et une moyenne de/en prenant un minimum de/une autre forme de traitement.
En outre, veuillez noter que vous pouvez trouver qu'il est plus utile de profil de l'exécution de votre application à l'aide d'un outil comme le Requin. Ce ne sera pas vous donner de date exacte de l'information, mais il vous dira quel pourcentage de la demande, du temps est passé où, ce qui est souvent plus utile (mais pas toujours).
Je sais que c'est vieux mais encore je me suis retrouvé à errer passé de nouveau, alors j'ai pensé que je voudrais vous soumettre ma propre option ici.
Le mieux est de vérifier sur mon blog à ce sujet: Calendrier choses en Objective-C: Un chronomètre
En gros, j'ai écrit une classe qui fait arrêter de le regarder d'une manière très simple mais est encapsulé en sorte que vous ne devez faire ce qui suit:
[MMStopwatchARC start:@"My Timer"];
// your work here ...
[MMStopwatchARC stop:@"My Timer"];
Et vous vous retrouvez avec:
MyApp[4090:15203] -> Stopwatch: [My Timer] runtime: [0.029]
dans le journal...
Encore une fois, consultez mon post un peu plus, ou le télécharger ici: MMStopwatch.zip
OK, si votre objectif est de découvrir ce que vous pouvez résoudre à rendre plus rapide, c’est un petit but différent. Mesurer le temps que prennent les fonctions est un bon moyen pour savoir si ce que vous avez fait une différence, mais pour savoir quoi faire vous avez besoin d’une technique différente. C’est ce que je recommandeet je sais pas que vous pouvez le faire sur les iPhones.