|
|
Geschwindigkeitsoptimierung · Software Speed Optimization · High Performance Computing · Number Crunching · C/C++ · Assembler · SIMD · MMX · SSE · SSE2 · SSE3 · 3DNow! |
|
|
|
||||
|
Software- Plattformen |
Software-Geschwindigkeits-OptimierungDiese Seite erläutert das Thema Software-Geschwindigkeits-Optimierung:
Was ist Software-Geschwindigkeits-Optimierung?Software kann in verschiedener Hinsicht optimiert werden:
Software-Geschwindigkeits-Optimierung ist die Art von Optimierung, die sich mit der Reduktion der Ausführungsdauer für einen Code-Abschnitt befasst, und zwar durch Design und Implementation dieser Software in einer geeigneten Art und Weise. Dies sollte nicht verwechselt werden einer anderen Art von Geschwindigkeits-Optimierung: Die Optimierung von Software-Paketen/Applikationen durch eine entsprechende Konfiguration / Parametrierung. Diese Art der Optimierung könnte "Software-Paket-Geschwindigkeits-Optimierung" genannt werden. Ein Beispiel hierfür sind Optimierungen von Datenbankanwendungen durch Konfiguration der Datenbank oder der benutzen Datentypen etc. Ein anderes Beispiel ist das "tunen" eines Betriebssystems durch Festlegen der Größe von Swap-Dateien oder Datei-/Font-/Etc.-Caches. Der Unterschied zwischen beiden Optimierungs-Arten besteht darin, dass "Software-Geschwindigkeits-Optimierung" sich mit dem Quellcode der Software auseinandersetzt, die tatsächlich von der Hardware ausgeführt wird, während dies bei der "Software-Paket-Geschwindigkeits-Optimierung" nicht der Fall ist. Im Kontext von Hayes Technologies wird der Begriff "Software-Geschwindigkeits-Optimierung" ausschließlich in der oben definierten Weise benutzt.
Was beeinflusst die Ausführungsgeschwindigkeit?Die Ausführungsgeschwindigkeit wird im Wesentlichen beeinflusst / definiert durch:
Neben diesen Punkten spielt natürlich auch die Hardware-Konfiguration eine große Rolle. Aber dies ist ein separates Thema; die Interaktion von Software-Geschwindigkeits-Optimierung und Hardware-Optimierung muss aber immer bedacht werden.
Warum Software optimieren?Dies ist eine Schlüsselfrage. Häufig anzutreffende Gedankengänge hierzu sind:
Offensichtlich sind diese Argumente in vielen Fällen gültig. Aber lassen Sie uns etwas genauer hinschauen:
Und dies sind nicht die einzigen Argumente für Software-Geschwindigkeits-Optimierung:
Für eine ganze Klasse von Applikationen, solche, bei denen der Stromverbrauch wichtig ist, ist folgender Punkt wichtig:
Und schließlich muss einer der Argumente angeführt werden, welches mit das höchste Potential für Kostenersparnis und Risikominimierung bietet:
Wie viel schneller kann eine Software durch Software-Geschwindigkeits-Optimierung werden?Die hängt maßgeblich vom spezifischem Kontext und dem Entwicklungsaufwand ab, der in Software-Geschwindigkeits-Optimierung investiert wurde. Grundsätzlich, wenn die fraglichen Funktionen / Module nicht bereits durchoptimiert sind (z.B. Mathematik-Routinen des Compiler-Herstellers) und die Aufgabe nicht I/O-limitiert ist (durch die Geschwindigkeit des Speichers oder der Festplatte limitiert) und die Aufgabe nicht eher einfach ist (z.B. Element-weise Addition von 2 Arrays, Matrix-Multiplikation etc.), dann liegen die erreichbaren Beschleunigungsfaktoren in vielen Fällen im Bereich 2 .. 5. Und in manchen Fällen noch deutlich höher. Das ist, als ob Ihre Software auf einer Maschine mit bis zu 10 GHz oder sogar mehr als 20 GHz laufen würde! (Bei Annahme einer 2 GHz Maschine als Basis)
Warum kann die Beschleunigung so hoch sein? Die Hauptgründe hierfür sind:
Hayes Technologies kann das Potential für Beschleunigung analysieren inkl. einer Abschätzung des erforderlichen Aufwandes. Bitte lesen Sie hierzu auch die Fallbeispiele, diese enthalten Zahlen bzgl. der erreichten Beschleunigungsfaktoren, und den Abschnitt über Technologie, dort werden einige der Gründe für die Beschleunigungsfaktore näher erläutert.
Warum einen Experten für Software-Geschwindigkeits-Optimierung beauftragen?Grundsätzlich hält Sie nichts davon ab, die Software-Geschwindigkeits-Optimierung selbst in die Hand zu nehmen. Die Praxis zeigt aber, dass nur wenige Teams oder Organisationen tatsächlich diese Aufgabe in einer geeigneten Weise angehen. Nicht ohne Grund: Der Schlüsselgrund hierfür ist, dass Software-Geschwindigkeits-Optimierung eine separate Fachdisziplin ist, die umfassendes Wissen und umfassende Erfahrung erfordert, ähnlich wie bei, z.B., der Entwicklung von Device Drivern oder Betriebssystem-Kerneln. Zusätzlich zu allen Standardfertigkeiten muss ein Experte für Software-Geschwindigkeits-Optimierung folgendes mitbringen:
Typischerweise bedeutet dies, dass entweder diese Fähigkeiten im Hause nicht vorhanden sind, oder aber sie sind vorhanden, aber die Opportunitätskosten sind sehr hoch, weil es impliziert, dass die erfahrensten Entwickler sich nicht mit anderen wichtigen Aufgaben befassen können, mit der Folge, dass wahrscheinlich Verzögerungen, sub-optimales Software Design, weniger Features etc. auftreten und somit, als letztliche Konsequenz, Reduktion der Gewinne.
Werden all diese Punkte berücksichtigt, wird in den meisten Fällen ein externer Experte nicht nur gerechtfertigt, sondern erforderlich sein. |
|
Plattformen: x86 · Pentium · Pentium MMX · Pentium II · Pentium III · Pentium 4 · Core · Core 2 · Xeon · Itanium · Athlon · DSPs · Embedded CPUs · Windows · Linux · RT-OS Besonders profitierende Applikationsgebiete: Bildverarbeitung · Signalverarbeitung · High Performance Computing / Number Crunching · Simulationen · Kompression · Spiele · 3D Software · Gerätetreiber · Multi-Prozessor Systeme · Multi-Computer Systeme / Cluster · Embedded Geräte · Echtzeit-Systeme · Interaktive Systeme · Und viele mehr... |
|
Copyright (C) 2001-2007 by Hayes Technologies -
Alle Rechte vorbehalten - Rechtliche Information
- English Homepage
Letzte Änderung: 10.1.2007
|