2010-12-09 12 views

Répondre

11

Vous pouvez utiliser la classe System.Diagnostics.Stopwatch.

Stopwatch sw = new Stopwatch(); 
sw.Start(); 

// Your method call here... 

sw.Stop(); 

// Get the elapsed time 
TimeSpan elapsed = sw.Elapsed; 

A partir de là, vous pouvez utiliser les TimeSpan.Ticks ou les propriétés TimeSpan.TotalSeconds pour déterminer les tiques écoulées ou secondes écoulées, respectivement. Si vous le souhaitez, vous pouvez utiliser une méthode suivant les lignes suivantes pour "envelopper" cette fonctionnalité autour d'une fonction, comme vous l'avez mentionné (juste une idée, vous voudrez probablement modifier ce code en fonction de vos objectifs spécifiques - en passant des arguments, etc.):

public static T ExecuteWithElapsedTime<T>(Func<T> function, out TimeSpan elapsedTime) 
{ 
    T rval; 

    Stopwatch sw = new Stopwatch(); 
    sw.Start(); 
    rval = function(); 
    sw.Stop(); 
    elapsedTime = sw.Elapsed; 

    return rval; 
} 

Et vous pouvez l'appeler comme celui-ci (où myFunc est une fonction qui renvoie un int):

TimeSpan elapsed; 
int result = ExecuteWithElapsedTime(myFunc, out elapsed); 

pourrait être plus simple que de même pas déranger avec une méthode comme t son, et juste mettre le code Stopwatch en ligne avec votre appel de méthode.

+0

Merci mon pote, vous êtes l'homme! –

+0

Vous l'avez eu :) Je suis heureux d'avoir pu aider. – Donut

3

Utilisation:

using System.Diagnostics; 

... 

var sw = Stopwatch.StartNew(); 
DoYaThing(); 
Console.WriteLine("{0} Elapsed", sw.Elapsed); 
0

Vous pouvez consulter la classe [System.TimeSpan] et WRAP autour de votre méthode.