Frage zu Klassen und Templates
-
Hi,
ich hab' nur ne ganz kurze Frage: ist eine Klasse langsamer wenn es eine template-Klasse ist?
-
LukasBanana schrieb:
ich hab' nur ne ganz kurze Frage: ist eine Klasse langsamer wenn es eine template-Klasse ist?
Nein und Ja
In der Regel kannst du mittels templates die Ausführungsgeschwindigkeit eines Programmes erhöhen, aber verlangsamst die Compilezeit und erhöhst die Programmgröße.
templates werden in C++ zur Compilezeit aufgelöst. aus:
template<typname T> struct Foo { T value; }; int main() { Foo<int> a; Foo<short> a; }Würde der Compiler nun zwei Strukturen machen, eine für int und eine für short spezialisiert.
-
Achso, gut aber dass die Compilezeit länger dauert macht eigentlich nichts.
Wichtig ist dass das Programm dadurch gleich schnell oder sogar noch schneller wird.Danke sehr

-
LukasBanana schrieb:
Achso, gut aber dass die Compilezeit länger dauert macht eigentlich nichts.
Wichtig ist dass das Programm dadurch gleich schnell oder sogar noch schneller wird.Danke sehr

Das sollte exakt gleich schnell sein, wie, wenn du die Klasse ganz von Hand schreiben würdest.
-
LukasBanana schrieb:
Achso, gut aber dass die Compilezeit länger dauert macht eigentlich nichts.
Wichtig ist dass das Programm dadurch gleich schnell oder sogar noch schneller wird.Schneller wird es nur wenn man Templatetechniken verwendet, die Indirektionen vermeiden (z.B. statische statt dynamische Polymorphie) oder durch die Konvertierungen wegfallen.
Stell dir Templates als eine Art von typsicheren Makro vor, das aber im Gegensatz zu den Makros keine Stupide Textersetzung ist.
cu André