709 Stimmen

Berechnung der Ausführungszeit einer Methode

Mögliches Duplikat:
Wie kann ich messen, wie lange eine Funktion läuft?

Ich habe eine zeitraubende E/A-Methode, die Daten von einem Ort zu einem anderen kopiert. Wie lässt sich die Ausführungszeit am besten und realistischsten berechnen? Thread ? Timer ? Stopwatch ? Gibt es eine andere Lösung? Ich möchte die genaueste und kürzeste Lösung so weit wie möglich.

8voto

Khai Vu Punkte 598

Sie können auch Folgendes verwenden: "Ermittelt die Anzahl der seit dem Systemstart verstrichenen Millisekunden."

System.Environment.TickCount

Zum Beispiel

static void method1()
{
    for (int i = 1; i <= 100; i++)
    {
        Console.WriteLine("Test1 " + i);
    }
}
static void Main(string[] args)
{
    var startTime = Environment.TickCount;
    method1();
    var endTime = Environment.TickCount;
    Console.WriteLine("RunTime " + (endTime - startTime));
}

7voto

Brian Agnew Punkte 260470

StopWatch wird den hochauflösenden Zähler verwenden

Die Stoppuhr misst die verstrichene Zeit durch Zählen von t zugrundeliegenden Zeitgebermechanismus. Wenn die installierte Hardware und das Betriebssystem Betriebssystem einen hochauflösenden Leistungszähler unterstützen, dann kann die Stopwatch-Klasse diesen Zähler zur Messung der verstrichenen Zeit verwenden. Andernfalls, verwendet die Stopwatch-Klasse den Systemtimer, um die verstrichene Zeit zu messen. Verwenden Sie die Felder Frequenz und IsHighResolution, um die Genauigkeit und Auflösung und Auflösung der Stopwatch-Implementierung zu bestimmen.

Wenn Sie IO messen, dann werden Ihre Zahlen wahrscheinlich von externen Ereignissen beeinflusst, und ich würde mir so meine Gedanken machen. Exaktheit (wie Sie oben angedeutet haben). Stattdessen würde ich eine Reihe von Messungen vornehmen und den Mittelwert und die Verteilung dieser Zahlen betrachten.

2voto

Md.Rakibuz Sultan Punkte 546
 using System.Diagnostics;
 class Program
 {
    static void Test1()
    {
        for (int i = 1; i <= 100; i++)
        {
            Console.WriteLine("Test1 " + i);
        }
    }
  static void Main(string[] args)
    {

        Stopwatch sw = new Stopwatch();
        sw.Start();
        Test1();
        sw.Stop();
        Console.WriteLine("Time Taken-->{0}",sw.ElapsedMilliseconds);
   }
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X