233 votes

Comment se connecter à une méthode ' s temps d’exécution exactement en millisecondes ?

Y a-t-il un moyen de déterminer combien de temps a besoin d’une méthode d’exécution (en millisecondes) ?

448voto

Matthew McGoogan Points 2532
<pre><code></code><p>Facile à utiliser et dispose de précision à la milliseconde subsidiaire.</p></pre>

255voto

Ron Points 936

Voici deux macros une ligne que j’utilise :

Utilisez-le comme ceci :

52voto

Stephen Canon Points 58003

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).

9voto

bladnman Points 1021

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

2voto

Mike Dunlavey Points 25419

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X