Zeiger in Zeiger konvertieren - Templates



  • Ich glaube, ich habe irgendwo mal einen Artikel darüber gelesen, wie viel Speicher generierte Spezialisierungen bei bestimmten Anzahlen verbrauchen, dabei kam AFAIR heraus dass der Compiler da mit optimiert.



  • @Sone: Interessant. Das bestärkt meine Hoffnung auf

    Außer der Compiler macht da noch irgendwas tolles, und Compiler machen oft viel tollere Sachen als man denkt.

    😉



  • Warum ist dir eigentlich so wichtig, dass das executable klein ist? Das wird hier ja kaum um Größenordnungen gehen sondern eher um ein paar Promille bis Prozent, jenachdem was du machst. 64 intro (Demoscene)? 🙂



  • zumal auch solche konvertierungen die du dir erhoffst nicht unbedingt vom compiler genutzt werden, da dieser ja ohne jegliche hürden den typ bestimmt und dafür eine funktions signatur sucht. sprich, es kann sein, dass er trotz deines schönen void* templates doch auf eigene faust andere instantiierungen bildet



  • Mir geht es ja nicht um die paar Promille, sondern einfach ums Prinzip. Wenn es schlanker und schneller geht, dann soll es eben schlanker und schneller sein, da spricht ja nichts dagegen. Ich finde es nur schade, wenn man daran gehindert wird. Vielleicht (jetzt kommt der Freud in mir) liegt es ja auch an meinem Hang fürs Axiomatisieren. 😃



  • Beim Programmieren geht man nunmal Kompromisse ein. Der klassische ist size vs. speed, in dem Fall denke ich aber eher an Code-Einfachheit vs. size. Und für mich ist eleganter, simpler code erstmal das wichtigste (so ganz axiomatisch ;)), wovon ich nur abweiche wenn es nötig ist. Andere Leute, die den source mal irgendwann bearbeiten wollen/müssen (oder gar man selbst nach einiger Zeit) freuen sich da ja (bzw. ärgern sich ziemlich wenns nicht so ist).



  • pureprogger schrieb:

    Wenn es schlanker und schneller geht, dann soll es eben schlanker und schneller sein

    Dann nimm doch optimierten inline-assembler 🤡



  • Da kann ich dir nur zustimmen, Dobi. Sauberer Code geht natürlich immer vor. 🙂

    @Sone: 😃



  • Mal abgesehen davon sind Templates schneller als Generics...



  • Kellerautomat schrieb:

    Mal abgesehen davon sind Templates schneller als Generics...

    Laut dem was ich im Netz lese, sind Templates eine Form der Unterstützung von Generics.



  • Darf ich dich bitten, zuerst den Thread zu lesen, bevor du schreibst?

    Kellerautomat schrieb:

    Generics und Templates sind nunmal zwei komplett verschiedene Dinge. [...]



  • Kellerautomat schrieb:

    Darf ich dich bitten, zuerst den Thread zu lesen, bevor du schreibst?

    Kellerautomat schrieb:

    Generics und Templates sind nunmal zwei komplett verschiedene Dinge. [...]

    Vielen Dank, ich habe den Thread gelesen.
    Falls du Recht haben solltest, kannst du den Wikipedia-Eintrag editieren.



  • Bei Programmiersprachen gibt es prinzipiell zwei Ansätze, generische Typen zu unterstützen. Der eine ist es, dass GenerischerTyp<T> für alle Ts denselben Code verwendet und über dynamische Bindung von Methoden spezifische Eigenschaften von T nutzt. Ein anderer Weg, den u.A. C++ geht, ist die Anwendung von Templates. Dabei wird der Typparameter zur Compilierzeit direkt mit dem konkreten Typ ersetzt.



  • Kellerautomat schrieb:

    Bei Programmiersprachen gibt es prinzipiell zwei Ansätze, generische Typen zu unterstützen. Der eine ist es, dass GenerischerTyp<T> für alle Ts denselben Code verwendet und über dynamische Bindung von Methoden spezifische Eigenschaften von T nutzt. Ein anderer Weg, den u.A. C++ geht, ist die Anwendung von Templates. Dabei wird der Typparameter zur Compilierzeit direkt mit dem konkreten Typ ersetzt.

    Halt, da hab' ich wohl falsch verstanden. Ich dachte, Generics sind generische Typen. Dabei sind, wie du schon angedeutet hast, Generics und Templates die Umsetzung von generischen Typen. 💡 wurde so im Artikel falsch impliziert.

    Danke.


Anmelden zum Antworten