7H3 N4C3R
Lt. Commander
- Registriert
- Feb. 2002
- Beiträge
- 1.816
Wissbegierde ist immer gut. Geschwindigkeitsoptimierung solltest du sofort wieder abhaken.
C++-Code wird Compiler eh in Assembler umgesetzt. Bis du aber jemals ansatzweise die Geschwindigkeit eines Compilers erreichst, werden Monate ins Land gehen. Vergiss Taktzyklen, die sind seit mind. 15 Jahren irrelevant. Alles worauf es ankommt ist auf prozessorspezifische Pipelinegrößen, Caches, Prefetching und Optimierungsstrategien hin zu programmieren. Das ist beliebig kompliziert und das Wissen was Compilerbauer hier bereits reingesteckt haben ist gewaltig.
In der Regel liegt das Problem in den Algorithmen. Ein ineffektiver Algorithmus ist in C++ wie auch in Assembler langsam (Komplexität). Ein Algorithmus mit logarithmischer Laufzeit wird amortisiert einen Algorithmus mit linearer Laufzeit ausschießen. Zumal - wenn man nicht weiß, wo die langsamen Stellen sind, kann man das Optimieren gleich ganz sein lassen. Diese Frage beantwortet detailliertes Code-Profiling. Optimierung an Code, der garnicht ins Gewicht fällt, ist vertane Zeit und damit auch vertanes Geld.
Außerdem muss man sich schon entscheiden - hardware unabhängig oder nicht? Mit einer Mischung aus beidem gibst du die Hardware-Unabhängigen Vorteile von C++ komplett auf. Die Wartbarkeit leidet davon abgesehen auch noch dramatisch.
C++-Code wird Compiler eh in Assembler umgesetzt. Bis du aber jemals ansatzweise die Geschwindigkeit eines Compilers erreichst, werden Monate ins Land gehen. Vergiss Taktzyklen, die sind seit mind. 15 Jahren irrelevant. Alles worauf es ankommt ist auf prozessorspezifische Pipelinegrößen, Caches, Prefetching und Optimierungsstrategien hin zu programmieren. Das ist beliebig kompliziert und das Wissen was Compilerbauer hier bereits reingesteckt haben ist gewaltig.
In der Regel liegt das Problem in den Algorithmen. Ein ineffektiver Algorithmus ist in C++ wie auch in Assembler langsam (Komplexität). Ein Algorithmus mit logarithmischer Laufzeit wird amortisiert einen Algorithmus mit linearer Laufzeit ausschießen. Zumal - wenn man nicht weiß, wo die langsamen Stellen sind, kann man das Optimieren gleich ganz sein lassen. Diese Frage beantwortet detailliertes Code-Profiling. Optimierung an Code, der garnicht ins Gewicht fällt, ist vertane Zeit und damit auch vertanes Geld.
Außerdem muss man sich schon entscheiden - hardware unabhängig oder nicht? Mit einer Mischung aus beidem gibst du die Hardware-Unabhängigen Vorteile von C++ komplett auf. Die Wartbarkeit leidet davon abgesehen auch noch dramatisch.