PerformanceTestEngine

Diese Engine stellt den einfachen Zugriff auf Zeitmessfunktionen dar. Es nutzt die StopWatch der Net-Frameworks.
Es kann auch mehrere StopWatches verwalten um z.B. Gesamtzeiten und Einzelzeiten separat zu messen. So können z.B. PerformanceTests vor und nach einer Optimierung gemacht werden. So kann verglichen werden welche Implementierung die idealere ist.
Es hat die Funktionen:
void Start()
void Start(string pPerfName)

TimeSpan Stop()
TimeSpan Stop(string pPerfName)
Über die Start und Stop Funktionen ohne Parameter wird die Standard-StopUhr gestartet und gestoppt. Man kann aber unendlich viele weitere Stoppuhren mithilfe des "pPerfName" definieren.
Beispiel
Was ist performanter, der UI-Thread-Save Zugriff auf Control-Propertys per Refelction oder per DependancyProperty:
new SoftHai.Testing.ConsoleClearObject().Unit_ToConsole(); //Clear Console

int NumberOfReplays = 500;

var UITestEngine = new SoftHai.Testing.UITest.UITestEngine((PhoneApplicationFrame)App.Current.RootVisual);

System.Threading.Thread T = new System.Threading.Thread(delegate() 
    {
        TimeSpan MeasuredTime;
        var PerfTestEngine = new SoftHai.Testing.PerformanceTest.PerformanceTestEngine();
        PerfTestEngine.Start("Summary");

        //Access via Reflections
        PerfTestEngine.Start();
        for (int i = 0; i < NumberOfReplays; i++)
        { var State = (bool)UITestEngine.Control_GetPropertyValue("CheckBox", "IsChecked", null); }
        MeasuredTime = PerfTestEngine.Stop();
        String.Format("{1} Access via Reflections: {0} ms", MeasuredTime.TotalMilliseconds, NumberOfReplays).Unit_ToConsole();

        //Access via DependancyProperty
        PerfTestEngine.Start();
        for (int i = 0; i < NumberOfReplays; i++)
        { var State = (bool)UITestEngine.Control_GetPropertyValue("CheckBox", CheckBox.IsCheckedProperty); }
        MeasuredTime = PerfTestEngine.Stop();
        String.Format("{1} Access via DependancyProperty: {0} ms", MeasuredTime.TotalMilliseconds, NumberOfReplays).Unit_ToConsole();

        MeasuredTime = PerfTestEngine.Stop("Summary");
        String.Format("Total Testtime: {0} ms", MeasuredTime.TotalMilliseconds).Unit_ToConsole();

        UITestEngine.DoIt_UIThreadSave(new Action(delegate() 
            {
                this.IsEnabled = true;
            }),null);
    });
this.IsEnabled = false;
T.Start();
Hier sieht man die Verwendung der Standard-StopWatch und die Verwendung einer zweiten benannten StopWatch Namens "Summary".

This WikiPage was created with Codeplex WikiEditor

Last edited Jun 24, 2010 at 9:27 AM by SoftHai, version 2

Comments

No comments yet.