Wie Jon Skeet oben geschrieben hat, gibt es zwei Strategien: Instrumentierung und Sampling.
Die Instrumentierung erfolgt sowohl manuell als auch automatisch. Im manuellen Fall: Der Entwickler fügt Code manuell ein, um den Anfang/das Ende einer Region von Code von Interesse zu verfolgen. Zum Beispiel ein einfacher "StartTimer" und "EndTimer". Einige Profiler-Tools können dies auch automatisch tun. Dazu muss der Profiler eine statische Analyse des Codes durchführen, d. H. Er analysiert den Code und identifiziert wichtige Prüfpunkte wie den Start/das Ende einer bestimmten Methode. Dies ist am einfachsten mit Sprachen, die Reflektion unterstützen (z. B. jede .net-Sprache). Mithilfe von 'reflection' kann der Profiler den gesamten Quellcode-Baum (zusammen mit Call-Graphen) rekonstruieren.
Die Abtastung erfolgt durch den Profiler und es wird in den Binärcode hineingeschaut. Der Profiler kann auch Techniken wie Hooks oder Trap Windows Ereignisse/Nachrichten zum Zwecke der Profilerstellung.
Sowohl Instrumentations- als auch Stichprobenmethoden haben ihre eigenen Gemeinkosten. Die Menge an Kopf hängt ab - z.B. Wenn die Abtastfrequenz auf hohe Werte eingestellt ist, kann das Profiling selbst erheblich zur gemeldeten Leistung beitragen.
Instrumentierung Vs Probenahme: Es ist nicht wie man ist besser als der andere Ansatz. Beide haben ihren Platz.
Der beste Ansatz ist, mit einem Sampling-basierten Profiler zu beginnen und die gesamte Systemebene zu betrachten. Dadurch wird der Sampler ausgeführt und die systemweite Ressourcennutzung angezeigt: Speicher, Festplatte, Netzwerk, CPU.
Aus dem oben genannten identifizieren die Ressourcen, die erstickt werden.
Mit den obigen Informationen können Sie Ihrem Code nun Instrumente hinzufügen, um den Schuldigen genau zu lokalisieren. Wenn zum Beispiel Speicher die am häufigsten verwendete Ressource ist, wird es helfen, Ihren Speicherzuordnungscode zu instrumentieren. Beachten Sie, dass Sie sich bei der Instrumentierung auf einen bestimmten Bereich Ihres Codes konzentrieren.
Was meinen Sie mit "verwaltetem Code"? – tunnuz
http://en.wikipedia.org/wiki/Managed_code – aku