2008-11-02 7 views

Antwort

5

Ich habe keine solche Tools für WindowsMobile für native Entwicklung gefunden.

Die nächste, die ich gefunden habe, ist das EnTrek Toolset (CodeSnitch/ProcMan), aber sie sind nicht wirklich Profiling-Tools.

Was wir getan haben, ist die Erstellung eigener Profiling-Unterstützung in unsere eigenen Produkte mit dem Switch "/ Callcap" von Visual Studio für VC++. Mit diesem Schalter können Sie eine Profiling-Bibliothek erstellen, die Timings und Counts nach Belieben ausgibt. Es funktioniert meistens gut für uns, aber manchmal kann der Overhead dieser Hook-Funktionen zu viel sein und es kann die Timing-Ergebnisse zu Bereichen mit einer massiven Anzahl von Funktionsaufrufen verzerren.

aus der MSDN Docs:

Die/callcap Option bewirkt, dass die Compiler Anrufe einzufügen Haken am Anfang und am Ende jeder Funktion Profilierung.

Sie müssen Profiling-Hooks ohne den Callcap-Switch kompilieren. Wenn Sie die Profiling-Hook-Funktionen mit dem Callcap-Switch kompilieren, führen die Funktionen endlose rekursive Aufrufe an sich aus.

Das folgende Codebeispiel, Callcaphooks.c zeigt eine Profilierung hook Funktion _CAP_Enter_Function, für compilation ohne callcap.

// File: callcaphooks.c 

#include <stdio.h> 
int main(); 

void _CAP_Enter_Function(void *p) 
{ 
    if (p != main) 
     printf("Enter function (at address %p) at %d\n", 
      p, GetTickCount()); 
     return; 
} 
void _CAP_Exit_Function(void *p) 
{ 
    if (p != main) 
     printf("Leaving function (at address %p) at %d\n", 
      p, GetTickCount()); 
    return; 
} 
+0

Danke, Shane. Wie du gesagt hast, nicht genau das, wonach ich gesucht habe. Aber immer noch ein toller Hinweis. Ich habe bereits einige Utility-Klassen für das Profiling, aber bis jetzt habe ich sie nur manuell über Makros im verdächtigen Code hinzugefügt. –

0

Wenn Sie .NET CF-Entwicklung tun, überprüfen Sie die Power Toys for .NET CF 3.5 für Dienstprogramme, mit denen Sie Engpässe, vor allem Speicher bezogenen helfen können.

+0

Sorry, ich habe erwähnt sollte, war mir bewusst Power Toys aber in meinem Fall können sie nicht verwendet werden, da der Code stammt. –

9

Windows CE unterstützt die Remote Call Profiler (wenn der OEM-Unterstützung hinzugefügt) aus dem Kasten heraus. WinMo Bilder, glaube ich, haben typischerweise bereits Unterstützung in den Bildern dafür. Für CE müssen Sie die IMAGEPROFILER-Umgebungsvariable festlegen (unter Verwendung der Projekteigenschaften).

In MSDN ist nicht klar, wie man eine App instrumentiert, die nicht mit Platform Builder erstellt wurde, aber es ist eigentlich ziemlich einfach. Sie müssen die/callcap swith der Compiler-Befehlszeile hinzufügen und cecap.lib zu Ihren Linker-Einstellungen hinzufügen.

Natürlich benötigen Sie ein Tool zum Erfassen und Anzeigen der Profiler-Daten. Dazu können Sie die Evaluierungsversion von Platform Builder (5.0 oder 6.0) (das Eval ist kostenlos) oder eVC 4.0 (ebenfalls kostenlos) verwenden.

Für weitere Informationen über die Verwendung des Profilers hat Sue Loh vom CE Kernteam ein bisschen darüber gebloggt.

+0

+1 Danke für das Vorschlagen. Es ist ein Lebensretter :) Optimiert mein Blitter wie verrückt mit seinen profilierten Daten. – legends2k

3

Ich habe einen Call Graph Profiler für Windows Mobile geschrieben. Es befindet sich derzeit (Stand Januar 2010) in der Beta-Phase und kann kostenlos heruntergeladen werden.

http://www.codeprophet.co.cc

HTH

-Zak

+0

Scheint vielversprechend, ich werde es versuchen. –

+0

Es sieht so aus, als ob das Projekt auf http://codeprophet.co.uk verschoben wurde – oscode