BOOST macht das Erstellen des Projekts langsam??
-
Hallo,
ich habe den boost::tokenizer meinem Projekt hinzugefügt.
Jetzt dauert das Erstellen des Projekts ewig.
Ist das so normal?
Kann man das beschleunigen? Sind doch nur Header-Files, welche gelesen werden müssen.Gruß Lars
-
Lange Kompilierzeiten sind ein generelles Problem bei template-lastigen Bibliotheken. Und Boost besteht fast nur aus Templates.
Mögliche Lösungsansätze sind Pimpl-Idiom und vorkompilierte Header. Und natürlich nur die Header einbinden, die man wirklich braucht.
-
lamizi schrieb:
Sind doch nur Header-Files, welche gelesen werden müssen.
Genau das ist ja das was es langsam macht: der Code in den Headern wird jedes Mal neu kompiliert. Das haben aber Templates so an sich. Es gibt auch Non-Template-Code, da muß man dann die fertig kompilierte LIB angeben.
Die meisten Compiler haben PCH (Pre Compiled Headers) als Option. Wenn sich die Header-Datei nicht ändert, wird sie nicht neu kompiliert.
Weiterhin kannst du selber dafür sorgen, das du die Tokenizer-Nutzung in ein Pimple auslagerst. Wenn du deinen Tokenizer-nutzenden Code nicht mehr anfasst, entfällt das inkludieren der Template-Header.
-
Okay! Danke für die Antworten!
Aber was ist bitte ein Pimple?
Getraut man sich ja fast nicht in eine Suchmaschine einzugeben!Gruß Lars
-
pImpl ist ein Zeiger auf die Daten einer Klasse. Auf heise gabs demletzt einen Artikel.
http://www.heise.de/developer/artikel/C-Vor-und-Nachteile-des-d-Zeiger-Idioms-Teil-1-1097781.html
http://www.heise.de/developer/artikel/C-Vor-und-Nachteile-des-d-Zeiger-Idioms-Teil-2-1136104.html
-
"d-Zeiger-Idiom"... WTF!?
Wenn schon, dann Pimpl, Handle-Body oder Compiler-Firewall. Mit diesen Begriffen wird man von C++-Programmierern auch verstanden.
-
Nexus schrieb:
"d-Zeiger-Idiom"... WTF!?
Wenn schon, dann Pimpl, Handle-Body oder Compiler-Firewall. Mit diesen Begriffen wird man von C++-Programmierern auch verstanden.
"Cheshire Cat Idiom" ist noch einigermaßen geläufig. Aber d-Pointer habe ich auch noch nie gehört.
-
"Cheshire Cat" habe ich ehrlich gesagt ebenfalls noch nie gehört. Wikibooks spricht auch noch vom "opaque pointer idiom". Naja, mit Pimpl ist man auf der sicheren Seite
-
Heise schrieb:
Über das auch als d-Zeiger, Compiler-Firewall und Cheshire Cat bekannte Idiom mit dem lustigen Namen (pimple = engl. für "Pickel")
Man lernt immer dazu -.-
-
Den heise-Artikel finde ich nicht so gut. Zu viel Bla bla. In "Effektiv C++ Programmieren" von Scott Meyers ist es sehr gut erklärt. Aber das Buch sollte sowieso jeder C++-Programmierer lesen.