Profiler (Programmierung)

Profiler (Programmierung)

Als Profiler werden Programmierwerkzeuge bezeichnet, die das Laufzeitverhalten von Software analysieren. Es gibt unterschiedliche Problembereiche in der Softwareentwicklung, die durch ineffiziente Programmierung ausgelöst werden. Ein Profiler hilft dem Entwickler durch Analyse und Vergleich von laufenden Programmen die Problembereiche aufzudecken. Daraus kann man Maßnahmen zur strukturellen und algorithmischen Verbesserung des Quellcodes ableiten.

Inhaltsverzeichnis

Bereiche des Profilings

Messen von Geschwindigkeit

Die häufigste Anwendung eines Profilers ist das Zählen und Messen der Aufrufe und Durchläufe von Funktionen. Dies ermöglicht es dem Programmierer herauszufinden, wo sich eine Optimierung des Programms lohnt. Eine Optimierung von Funktionen, die nicht häufig verwendet werden, ist der Gesamtleistung des Programms nicht sonderlich zuträglich und erschwert in der Regel die Wartbarkeit des Quellcodes. Deshalb wird das Hauptaugenmerk auf Funktionen gelegt, die oft aufgerufen werden und in der Summe der Aufrufe viel Zeit benötigen.

Speichernutzung

Ein weiterer Aspekt ist die Verfolgung von Speichernutzung durch ein Programm. Der Profiler soll dabei helfen, den Ge- und Verbrauch von Arbeitsspeicher zu optimieren und ggf. Fehler in der Programmierung aufzudecken, durch die ungenutzte Speicherbereiche nicht freigeben werden (Speicherleck).

Nebenläufigkeit

Moderne Profiler bieten die Möglichkeit, nebenläufige Prozesse (Threads) in ihrem Lebenszyklus grafisch (zum Beispiel als Balken- oder Netzdiagramm) darzustellen. Diese optische Aufbereitung soll einem Programmierer helfen, das Laufzeitverhalten von nebenläufigen Prozessen besser zu interpretieren und Fehler durch Verklemmung (Deadlock) aufzudecken.

Technische Aspekte des Profilings

Das Profiling eines Programms selbst verursacht in der Regel eine Beeinflussung der zu analysierenden Anwendung. Üblicherweise verlangsamt der Profiler selbst die Ausführungsgeschwindigkeit. Außerdem entsteht bei Analysen von großen Programmen eine sehr große Menge an Daten. Es gibt unterschiedliche Techniken beim Profiling, die eine solche Beeinflussung, ggf. unter Verlust der Analysegenauigkeit, verschieden stark ausprägen. Außerdem ermöglichen die Profiler es zu bestimmen, welche Programmteile überhaupt analysiert werden sollen.

Statistische Auswertung

Mittels der statistischen Auswertung wird die Programmanalyse nicht exakt mit jedem Programmbefehl einer Messung unterzogen. Es wird vielmehr in einem bestimmten zeitlichen Zyklus die Laufzeit gemessen. Dieses Verfahren nennt man auch Sampling. Der Profiler greift damit in bestimmten Taktzyklenabständen in dem Programmablauf ein und ermittelt damit stichprobenartig, welche Programmteile seit dem letzten Zyklus aufgerufen wurden. Daraus wird ein statistischer Mittelwert errechnet, der in das Ergebnis der Analyse einfließt.

Bei der statistischen Auswertung wird das laufende Programm nicht verändert.

Instrumentierung

Mit der Instrumentierung werden vom Anwender bestimmte (oder gar alle) Programmabschnitte (zum Beispiel während der Laufzeit) mit Analysecode erweitert. Das heißt es werden in das Programm Unterbrechungs-Marken (Interrupts) oder Programmcode eingefügt, die dem Profiler während des Programmlaufs signalisieren, dass der Abschnitt gerade abgearbeitet wird. Die Zeit zwischen den Aufrufen der Analysepunkte (sowie das Speicherverhalten als Differenz zu einem vorherigen Durchlauf) können wieder als Laufzeitwerte in das Ergebnis der Analyse einfließen.

Die Instrumentierung verändert also das Programm, um die Analysedaten zu berechnen.

Es gibt verschiedene Typen der Instrumentierung

  • Manuelle Instrumentierung durch Erweiterung des Quelltextes durch Befehle, die die Laufzeit berechnen (z.B. mit der Programmierschnittstelle des Application Response Measurement-Standards).
  • Durch Compiler-Optionen erweiterte Programme, die dadurch Profiler-Marken erhalten.
  • Nachträgliche Veränderung von compilierten Programmen durch Einfügen von Marken.
  • Laufzeit-Instrumentierung: Dabei bleibt das gespeicherte Programm unangetastet. Die Profiler-Marken werden vor dem Ausführen im Arbeitsspeicher hinzugefügt.

Profil-Abbilder

Ziel einer Programmanalyse ist ein effizientes Laufzeitverhalten der Anwendung. Damit ein Vergleich auch objektiv gelingt, ermöglichen viele Profiler die gesammelten Analysedaten zu speichern und zu vergleichen. Somit können Programmänderungen in ihrem Laufzeitverhalten verglichen und bewertet werden. Die Profiler zeigen die Vergleichswerte üblicherweise relativ als Prozentangaben oder als absolute Werte an. Da aber immer ein Profiler das Laufzeitverhalten während der Analyse selbst beeinträchtigt, dürfen solche Vergleichswerte nicht als tatsächliche Veränderung betrachtet werden (Heisenbug).

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Profiler — (englisch wörtlich für „Profilierer“) steht für: Fallanalytiker erstellen Profile von Straftätern Profiler (Programmierung), Programmierwerkzeuge, die das Laufzeitverhalten von Software analysieren Profiler (Fernsehserie), eine amerikanische… …   Deutsch Wikipedia

  • Profiler (Software) — Als Profiler werden Programmierwerkzeuge bezeichnet, die das Laufzeitverhalten von Software analysieren. Es gibt unterschiedliche Problembereiche in der Softwareentwicklung, die durch ineffiziente Programmierung ausgelöst werden. Ein Profiler… …   Deutsch Wikipedia

  • Programmierung — Ausschnitt aus einem BASIC Listing für den C64 Programmierung (von griechisch prógramma „Vorschrift“) bezeichnet die Tätigkeit, Computerprogramme zu schreiben. Dies umfasst vor allem die Umsetzung (Implementierung) des Softwareentwurfs in… …   Deutsch Wikipedia

  • Aspekt-orientierte Programmierung — Die Artikel Aspektorientierte Programmierung und Cross Cutting Concern überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

  • Aspektorientierte Programmierung — (AOP) ist ein Programmierparadigma für die Objektorientierte Programmierung, um generische Funktionalitäten über mehrere Klassen hinweg zu verwenden (Cross Cutting Concern). Logische Aspekte eines Anwendungsprogramms werden dabei von der… …   Deutsch Wikipedia

  • NetBeans — IDE NetBeans IDE 6.0 Basisdaten Entwickler: Sun Microsystems Aktuelle Version …   Deutsch Wikipedia

  • Netbeans — IDE NetBeans IDE 6.0 Basisdaten Entwickler: Sun Microsystems Aktuelle Version …   Deutsch Wikipedia

  • Job-Match-Verfahren — Der Begriff Profiling bezeichnet: in der Kriminalistik die Erstellung eines Täterprofils durch einen Profiler (Kriminalistik) im Marketing die Erstellung von Kundenprofilen im Zielmarketing durch Kundenprofiler in der Programmierung die Analyse… …   Deutsch Wikipedia

  • Persönlichkeitsprofil — Der Begriff Profiling bezeichnet: in der Kriminalistik die Erstellung eines Täterprofils durch einen Profiler (Kriminalistik) im Marketing die Erstellung von Kundenprofilen im Zielmarketing durch Kundenprofiler in der Programmierung die Analyse… …   Deutsch Wikipedia

  • Compiler-Front-End — Ein Compiler (auch Übersetzer oder Kompilierer genannt) ist ein Computerprogramm, das ein in einer Quellsprache geschriebenes Programm – genannt Quellprogramm – in ein semantisch äquivalentes Programm einer Zielsprache (Zielprogramm) umwandelt.… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”