Frage

sah ich diese Frage, ob Globals sind schlecht .

Als ich über die Auswirkungen daran gedacht, das einzige Argument, das ich könnte damit kommt sie in einigen Fällen notwendig sind möglicherweise aus Leistungsgründen sein.

Aber, ich bin nicht wirklich sicher. Also meine Frage ist, würde mit einem globalen schneller sein als einen get / set-Methodenaufruf?

War es hilfreich?

Lösung

Ein angemessener Vergleich wäre zwischen den Zugriff auf ein globales (statisch) und ein lokales.

Tat ein globales ist schneller, da ein lokalen Zugriff auf die Variable auf den Wert des Stapelzeigers hinzugefügt werden Offset erfordert.

Allerdings werden Sie nie, immer müssen kümmern. Versuchen Sie, auf die Dinge konzentrieren, die, wie machen Sie Ihren Code lesbar sein Materie, beschreibbar und arbeiten.

Andere Tipps

Ein guter moderner Compiler sollte die get / set-Inline-Anrufe, so dass es wahrscheinlich kein wirklicher Unterschied.

In fast jedem Fall ist es viel wichtiger, kümmern, ob die Statik / Globals gehen Sie Kopfschmerzen als die Auswirkungen auf die Leistung verursachen, die ohnehin fast nicht nachweisbar sein werden.

Sie können mehr Leistung gewinnen noch durch in Assembler geschrieben werden. Und auch mehr Zeit verlieren Sie den Code in das Debuggen.

Es ist genau die gleiche Art von Handel.

Es könnte etwas schneller sein, aber nicht eine enorme Steigerung der Geschwindigkeit. Globals über alles Getter und Setter-Funktionen, die nicht halten Anwendung Größe obwohl nach unten. Ob diese Art der Größeneinsparungen für Ihre Anwendung von Vorteil ist, ist relevant für die Plattform, die Sie zielen. Wenn zum Beispiel Embedded-Anwendungen zu entwickeln, Plattformen mit begrenztem Speicher, kann es eine praktikable Lösung sein.

Es hängt von der CPU und Compiler. Auf mindestens einen beliebten PPC-Chipsatz, erfordert eine globale Variable Laden zusätzliche Anweisungen, weil sie nicht aufgefangen in einem 16-Bit relativ codiert werden können.

Plus, kann es einen riesigen Mist auf Cache-Ort nehmen und / oder jegliche Optimierungen zerstören, die kein Aliasing nehmen. Unter der Annahme, dass Globals Leistung erhöhen kann, ist etwas naiv.

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