Frage

Es gibt viele statische und dynamische Instrumentierung Werkzeuge. Soot ist eine statische Instrumentierung Tool für Java-Bytecode. Pin und Valgrind sind dynamische Instrumentierung Werkzeuge für Binärdateien.

Was sind Vor- und Nachteile für statische und dynamische Instrumentierung-Tools? Ich denke, statische Instrumentierung Werkzeuge sind besser in Bezug auf Laufzeit-Performance, während dynamische Tools mächtiger sind. Bitte vergleichen sie in Bezug auf die Fähigkeit und Leistung.

Plus, was ist der Unterschied mit Instrumenten von Tool von LLVM Pass zu schreiben?

War es hilfreich?

Lösung

Ich gehe davon aus der Notwendigkeit, Code zu entdecken, ist die erhebliche Zeit in Anspruch nimmt und dass Sie optimieren können, dass die Zeit zu retten. Das ist ein anderes Ziel von nur Timing-Routinen.

Ich bin skeptisch von statischen Analysatoren, weil alles auf den Mix Eingangsdaten abhängig ist.

Dynamische Instrumentierung versucht Eigenschaften von Funktionen zu messen, wie zum Beispiel: Selbst Zeit und die Gesamtzeit, absolute, Durchschnitts- und Prozent. Auch zählen nennen, und jede Routine Rolle in dem Aufrufgraphen.

Dynamische Instrumentierung (a la gprof ) hat der de-facto-Standard für Jahrzehnte gewesen, aber es ist sehr weit von dem letzten Wort sein. Zum einen ist es wichtig, dass die meisten der Statistiken zu erkennen, dass es Sie den Punkt in Bezug auf Ihre ursprünglichen Notwendigkeit fehlen gibt.

In diesen Tagen (IMHO) benötigen Sie einen Sampling-Profiler, dass die Proben der Call-Stack, nicht nur der Programmzähler. Es sollte an der Wand Uhr Zeit kosten, nicht nur die CPU-Zeit. Die Proben müssen nicht mit hohen Frequenz gezogen werden. Es sollte Probenahme unterdrücken, wenn die Anwendung auf Benutzereingaben wartet. Es sollte Ihnen Informationen auf der Linie oder Befehlsebene geben, nicht nur die Funktionsebene. Die wichtigste Statistik es sollten Sie für eine Zeile Code geben, ist der Anteil der Proben, die sie, denn das ist die direkteste Maß für die Zeit ist, die gespeichert werden können, wenn diese Linie optimiert ist.

Einige Profilometer können dies tun, Oprofile und rotateRight / Zoom insbesondere.

Andere Tipps

Die Profis von statischer Instrumentierung ist die Tatsache, dass die Analyse auf der Eingabe nicht abhängig ist. Die Analyse geschieht auf dem ursprünglichen Code und enthält alle Pfade des Codes. Vollständige Abdeckung. Diese Art der Instrumentierung umschreibt in der Regel die binäre, die für die Ausführung ohne die Notwendigkeit eines anderen Prozesses zur Laufzeit bereit ist. Das bedeutet auch, dass der Code schnell ausgeführt wird, mit der nur über Kopf aus dem injizierten Code kommen. Der Nachteil der statischen Instrumentierung ist die nicht ein detaillierte Analyse, die aufgrund des Fehlen von Laufzeitinformationen verursacht wird und aus diesem Grunde, manchmal sehr schwierig ist, Ihre Ziele zu erreichen.

Auf der anderen Seite, dynamische Instrumentierung nicht enthält jedes Detail und Informationen, die während der Laufzeit des Codes. In den meisten Fällen sind die Werkzeuge, die dynamische Instrumentierung durchführen, sind einfach zu schreiben. Auf der anderen Seite ist, vollständige Codeabdeckung erreichen nicht in der Lage aufgrund der Tatsache, dass der Ausführungspfad auf den gegebenen Eingaben abhängt. Auch die Tatsache, dass es für einen externen Prozess notwendig ist angebracht werden und Instrument des Original macht die Dinge langsamer.

Darauf,, LLVM Pässe sind für statische Instrumentierung verwendet, da der Code während der Kompilierung erzeugt wird, und ist bereits in den letzten binären geschrieben und sicher schließt alle die Vor- und Nachteile der statischen Instrumentierung Techniken.

Zum Schluss ist es eine Frage dessen, was man braucht. Sie sollten das richtige Werkzeug für den Job wählen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top