Comment puis-je mesurer combien de temps l'exécution d'une fonction?
Je veux voir combien de temps l'exécution d'une fonction. J'ai donc ajouté un objet timer sur ma forme, et je suis sorti avec ce code:
private int counter = 0;
//Inside button click I have:
timer = new Timer();
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
Result result = new Result();
result = new GeneticAlgorithms().TabuSearch(parametersTabu, functia);
timer.Stop();
Et:
private void timer_Tick(object sender, EventArgs e)
{
counter++;
btnTabuSearch.Text = counter.ToString();
}
Mais c'est sans compter quoi que ce soit. Pourquoi?
- si vous réglez la minuterie.stop(); après le Start() est normal. Quand est nécessaire pour arrêter la minuterie? Lorsque la fonction est terminée?
- pourquoi ne pas le Chronomètre? (msdn.microsoft.com/en-us/library/...)
- Double Possible de Mesurer les délais d'exécution du code
- Double Possible de Calculer le temps d'exécution d'une méthode
Vous devez vous connecter pour publier un commentaire.
Pour éviter de futurs problèmes avec une minuterie, voici le bon code:
Mais c'est la mauvaise approche. Vous devez utiliser le Chronomètre (Système D'.Le Diagnostic) classe parce que c'est un Haute résolution de la minuterie et le mot Diagnostic dit tout.
Donc, essayez ceci:
var timer = Stopwatch.StartNew();
<-- un de moins de ligne de codeTimer()
code ne fonctionne plus.Ne pas utiliser une minuterie - utiliser le
Chronomètre
classe.var sw = Stopwatch.StartNew();
<-- un de moins de ligne de codeLe meilleur moyen de voir combien de temps un peu de code à exécuter est d'utiliser
System.Diagnostics.Stopwatch
.Voici un exemple:
- Je utiliser le
#if DEBUG
pour assurer le chronomètre code n'entre pas dans la version de production, mais vous pouvez faire sans elle.Vous devez utiliser le chronomètre de classe pour des fonctions de temporisation.
Essayez ce qui suit:
Visual Studio 2015, 2017 Professionnelle et de l'Entreprise a l'outil de diagnostic. Si vous avez un point d'arrêt à la fin de votre fonction, il affiche l'heure et la durée en vertu de la Événements onglet comme indiqué dans l'image:
Vous pouvez voir l'article Outils de Diagnostic de la fenêtre du débogueur de Visual Studio 2015 pour plus de détails.
PS; Si loin que Xamarin forms, de la croix-projet de plate-forme ne supporte pas cette fonctionnalité. Je souhaite que Microsoft apporte cette grande fonctionnalité pour xamarin forms projets.
Utilisation Chronomètre de Système.Diagnostics:
ts.ToString("hh:mm:ss.ff")
outs.ToString("G")
?Pour le chronométrage d'une fonction, vous devez utiliser le Chronomètre De Classe
Aussi, la raison de votre minuterie n'est pas de comptage est parce que vous n'avez pas de définir un intervalle pour elle.
Peut-être, vous pourriez écrire une méthode comme ça:
Et de l'utiliser comme ça:
J'ai examiné et approuvé toutes les suggestions. Mais je voulais partager un générique de mise en œuvre pour le temps d'exécution de l'enregistreur de là où nous ne voulons pas mettre en œuvre Chronomètre logique de multiples fois, mais encore veut mesurer le temps d'exécution de plusieurs méthodes.
La principale raison pour ne pas mettre en œuvre enregistreur de façon générique est - l'exécution de la méthode est en entre le chronomètre.Start() et un chronomètre.Stop() aussi, nous pouvons exiger une méthode après l'exécution pour la poursuite du traitement.
Afin de s'attaquer à ce problème j'ai créé à la suite de l'échantillon de mise en œuvre où le temps d'Exécution est enregistré séparément et sans mélange avec la méthode des flux.
L'Appel De La Partie:
d'enregistrer le temps lors de l'étape actuelle commence à traiter