Feedback

C# - Ausführungszeiten von 2 Methoden einfach vergleichen/bestimmen

Veröffentlicht von am 06.02.2013
(1 Bewertungen)
Wenn man eine Methode häufig aufrufen muss, kann es hilfreich sein die Methode zu effektivieren. Um diese Effektivierung zu Testen habe ich dieses Snippet. Mann muss nur die beiden Methoden übergeben und die Anzahl der Durchläufe angeben (umso größer desto genauer). Danach bekommt man in die Debugausgabe die Ergebnise geschrieben und man bekommt Sie auch als spezielles Objekt zurück.

Hinweis: Um die Messung nicht zu verfälschen, sollte man keine Programme wärend der Ausführung starten oder beenden.

Verwendung:

class Program
{
static void Main(string[] args)
{
Test.MethodSpeedTestData result = Test.TestSpeedMethod(M1, M2, int.MaxValue);
Console.WriteLine("M1: {0} ms", result.Milleseconds1);
Console.WriteLine("M2: {0} ms", result.Milleseconds2);
Console.ReadKey();
}

static void M1()
{
int x = 10 * 2;
}
static void M2()
{
int x = 4 + 5;
}
}
GFU-Schulungen  [Anzeige]

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

public class Test
{
	public delegate void Method();
	public static MethodSpeedTestData TestSpeedMethod(Method m1, Method m2, int iterations)
	{
		MethodSpeedTestData result = new MethodSpeedTestData();
		Stopwatch sw = new Stopwatch();
		sw.Start();
		for (int i = 0; i < iterations; ++i)
			m1();
		sw.Stop();
		result.Milleseconds1 = sw.ElapsedMilliseconds;
		sw.Reset();
		sw.Start();
		for (int i = 0; i < iterations; ++i)
			m2();
		sw.Stop();
		result.Milleseconds2 = sw.ElapsedMilliseconds;
		Debug.WriteLine("Method 1: {0} ms", result.Milleseconds1);
		Debug.WriteLine("Method 2: {0} ms", result.Milleseconds2);
		return result;
	}

	public class MethodSpeedTestData
	{
		public MethodSpeedTestData()
		{
		}
		public MethodSpeedTestData(long ms1, long ms2)
		{
			this.Milleseconds1 = ms1;
			this.Milleseconds2 = ms2;
		}
		public long Milleseconds1{get;set;}
		public long Milleseconds2{get;set;}
	}
}
Abgelegt unter Speed, Stopwatch, Methode, Test, Geschwindigkeit.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!