Wenn die Anwendung eine Core-Datei erzeugt, wird der Debugger in der Regel auch in der Lage, die Codezeile zu melden, die Core-Datei erzeugt. Jedoch kann es nicht geben Ihnen die richtige Menge von Optimierungen für das fertige Programm. Jedoch möglicherweise einige dieser Optimierungen nicht für Ihren Einsatzfall geeignet. Flagge ist, dass die erzeugten Debug-Informationen den Oracle Developer Studio Performance Analyzer Attribut Zeitaufwand im Code direkt auf Zeilen Quellcode, macht den Prozess der Performance-Engpässe erheblich leichter finden kann. Selten macht es keinen Unterschied zu Leistung, und Ihr Programm werden leichter zu debuggen und zu analysieren. Der Compiler verwendet die Anweisung Set-Erweiterungen, die von der Kompilierung Plattform unterstützt werden. aber seien Sie sich bewusst, dass auf einem hohen Niveau der Optimierung, es nicht immer möglich, dass der Debugger den disassemblierten Code beziehen sich auf die genaue Linie der Quelle oder ermitteln der Wert der lokalen Variablen statt registriert, anstatt gespeichert. Flag, die angeben, dass ein allgemeiner Ziel erforderlich sein könnte.
Die Anwendung möglicherweise nicht ausgeführt, wenn diese Anleitung nicht auch stehen auf der Plattform wo die Anwendung bereitgestellt. Basic, die erklärt, dass die Anwendung keine Zeiger Aliasing zwischen unterschiedlichen Datentypen enthält. Mit diesem Flag kann bedeuten, dass einige Werkzeuge nicht in der Lage sind, korrekt Callstack Informationen generiert. Flag ist ein guter Ausgangspunkt für immer die beste Leistung aus Ihrer Anwendung.
auf Null gespült. und Fortran Compiler, cc, CC und f95, beziehungsweise. Code nicht Sprachstandards entspricht möglicherweise nicht ordnungsgemäß ausgeführt, wenn mit diesem Flag kompiliert. Flagge neigt dazu, mit jeder neuen Version ändern. enthält, und die Liste kann verwendet werden, um die richtigen sind für Ihre Anwendung auszuwählen. Es wird empfohlen, dass die Optimierungen, die es ermöglicht überprüft werden, bevor eine abschließende Reihe von Compiler-Flags sind für die Produktions-Build der Anwendung entschieden. Punkt-Berechnungen werden durchgeführt.
Daher, das Vorhandensein von Subnormals nicht nur verursacht Leistungsprobleme, sondern erfordert auch eine Untersuchung der Berechnungen. Subnormal Zahlen werden mit weniger signifikanten Stellen Genauigkeit gespeichert, sodass Code, die viele von ihnen sieht nicht nur langsamer läuft, sondern auch ungenaue Berechnungen durchführen kann. führt zu signifikanten Leistungssteigerungen. Materie, und es gilt als Profitabel, einen Kluft Betrieb durch Multiplikation zu ersetzen durch den Kehrwert. Gleitpunktarithmetik, wie man erwarten würde, in einem Mathematik-Lehrbuch zu finden. Sie können jedoch auch ein geldverlust an Genauigkeit führen.
Berechnungen auf subnormal Zahlen werden häufig in der Software, und sie sind sehr langsam, so dass Code, der eine beträchtliche Anzahl von Berechnungen auf subnormal Zahlen auch langsam ausgeführt wird. Berechnungen zeigen, siehe Oracle Developer Studio 12. Option führt interprocedural Optimierungen auf das gesamte Programm zur Verknüpfungszeit. Diese Veränderungen scheinen durchaus akzeptabel, wenn auf dem Papier durchgeführt und sie bieten einige Performance-Gewinne, aber sie können in einem Genauigkeitsverlust führen, wenn Algebra echte Numerik mit einer Anzahl von begrenzten Präzision wird. Die am weitesten verbreitete Möglichkeit ist es, Inline Code aus einer Datei in Code aus einer anderen Datei. Dies bedeutet, dass die Objektdateien wieder zur Verknüpfungszeit zu sehen, ob es weitere Optimierungsmöglichkeiten gibt geprüft werden. So dass inlining führt zu einer Leistung gewinn. Inlining ist gut für zwei Gründe, der offensichtlichste ist, dass es den Aufwand entfällt für eine andere Routine aufrufen. offensichtlicher Grund ist, dass inlining Mai setzen zusätzliche Optimierungen, die für den Objekt-Code ausgeführt werden können. Bevor Sie sich entscheiden, mit ihnen im Produktionscode, es empfiehlt sich, der Leistungszuwachs zu bewerten, Sie erhalten von der Verwendung der Flaggen, und ob es ein Unterschied in den Ergebnissen der Anwendung. bedeutet, dass der Compiler einen Aufruf an eine Routine mit den eigentlichen Code aus dieser Routine ersetzt. ist, dass es der Zeitpunkt der Kompilierung der Anwendung erheblich erhöhen kann und auch Sie die Größe der ausführbaren Datei erhöhen vielleicht. Aber Programme mit vielen verzweigten Funktionen möglicherweise nicht die beste Leistung erhalten. um festzustellen, ob die Erhöhung Kompilierungszeit Wert der Performancegewinn ist. und verwenden Sie die Performance-Profil-Daten gesammelt. Punkt intensiv, dadurch in der Regel guten Leistung. Profil-Feedback hilft den Compiler eine Programm zu optimieren, indem die Compiler echte Informationen über die Wege tatsächlich durch das Programm. Zu die kritischen Strecken durch den Code Wissen ermöglicht es dem Compiler, um sicherzustellen, dass diese die optimierte Routen sind. Durch inlining der Code in die Routine, die über alle Pixel im Bild funktioniert, kann der Compiler generieren Sie Code, um die aktuellen Offset zum nächsten Punkt anstatt eine Multiplikation und eine Ergänzung zu tun bekommen, jede Adresse jedes Punktes berechnen nur hinzufügen. aber der Compiler produzieren viel mehr optimale Ausführungspfade, was bedeutet, dass eine schnellere Bearbeitungszeit. Wenn ein Programm kompilieren, nimmt der Compiler eine bestmögliche Schätzung an wie der Ablauf des Programms gehen könnte, zum Beispiel, welche Branchen ergriffen werden und welche Branchen nicht getroffen werden. Das Programm kann mehrere Male mit unterschiedlichen Workloads für den Aufbau des repräsentativen Datensatzes ausgeführt werden. repräsentativen Datensatzes sollte eine sein, die den Code in die eigentlichen Daten ähnlicher Weise ausüben wird, die die Anwendung in der Produktion sehen. Versuchen Sie kompilieren mit Profil Feedback und sehen Sie, ob die zusätzliche Kompilierung der Performance-Gewinn lohnt. Natürlich, wenn die repräsentativen Daten verwaltet, den Code auf Art und Weise auszuüben, die nicht Vertreter der echten Arbeitslasten, dann Leistung optimale möglicherweise nicht. Xipo, weil die Profilinformationen auch den Compiler, bessere Entscheidungen zu treffen hilft inlining. ist eine Region von zusammenhängenden physikalischen Speicher. Wenn eine Programm Daten manipuliert, könnte es helfen, Leistungssteigerung mit großen Seiten, um die Daten zu halten. Allerdings ist es oft der Fall, dass der Code immer, durch ähnliche Strecken ausgeführt wird, und also unabhängig von, ob die Daten repräsentativ oder nicht ist, die Leistung verbessert. Weitere Informationen zu bestimmen, ob eine Arbeitsauslastung ist repräsentativ, lesen Sie meinen Artikel Auswahl Vertreter Training Workloads für Profil Feedback durch Erfassung und Analyse der Branche.