13 Stimmen

Testen Sie Ihren Code auf Geschwindigkeit?

Ich bin totaler Neuling, aber ich habe ein kleines Programm geschrieben, das auf Zeichenketten in C# arbeitet, und mir ist aufgefallen, dass wenn ich ein paar Dinge anders gemacht habe, der Code signifikant schneller ausgeführt wurde.

Also habe ich mich gefragt, wie man die Ausführungsgeschwindigkeit des Codes stoppt. Gibt es (kostenlose) Tools dafür? Geht man den altmodischen Weg und benutzt man ein System.Timer und macht es selbst?

0voto

torial Punkte 13003

Ich mache folgendes:
1) Ich benutze Ticks (z.B. in VB.Net Now.ticks), um die aktuelle Zeit zu messen. Ich ziehe den Startwert von den Endwert-Ticks ab und teile durch TimeSpan.TicksPerSecond, um zu sehen, wie viele Sekunden es gedauert hat.
2) Ich vermeide UI-Operationen (wie console.writeline).
3) Ich lasse den Code über eine beträchtliche Schleife laufen (wie 100.000 Durchläufe), um die Verwendung / Betriebssystemvariablen so gut wie möglich auszuschließen.

0voto

Chris Punkte 583

Sie können die StopWatch-Klasse verwenden, um Methoden zu timen. Denken Sie daran, dass die erste Zeit oft langsam ist, da der Code erst kompiliert werden muss.

0voto

e-holder Punkte 1434

Es gibt eine native .NET-Option (Team Edition für Softwareentwickler), die möglicherweise einige Leistungsanalyseanforderungen erfüllen könnte. Wählen Sie im .NET-IDE-Menü von 2005 Tools->Leistungswerkzeuge->Leistungshelfer...

[GSS hat wahrscheinlich Recht, dass Sie Team Edition haben müssen]

0voto

Dies ist ein einfaches Beispiel zur Überprüfung der Codegeschwindigkeit. Ich hoffe, ich konnte Ihnen helfen

class Program {
    static void Main(string[] args) {
        const int schritte = 10000;
        Stopwatch sw = new Stopwatch();

        ArrayList list1 = new ArrayList();
        sw.Start();
        for(int i = 0; i < schritte; i++) {
            list1.Add(i);
        }
        sw.Stop();
        Console.WriteLine("ArrayList:\tMilliseconds = {0},\tTicks = {1}", sw.ElapsedMilliseconds, sw.ElapsedTicks);

        MyList list2 = new MyList();
        sw.Start();
        for(int i = 0; i < schritte; i++) {
            list2.Add(i);
        }
        sw.Stop();
        Console.WriteLine("MyList:  \tMilliseconds = {0},\tTicks = {1}", sw.ElapsedMilliseconds, sw.ElapsedTicks);

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