Ich weiß, dass es sehr spät für die Party ist, aber Zeitänderungen und Antworten bleiben bestehen. C ++ 11 hat ziemlich umfassende Änderungen, von denen viele die Leistung von C ++ und der Standardbibliothek verbessern sollen. Es sieht so aus, als ob diejenigen, die STL oder Boost nicht verwenden, dazu neigen, auch nicht mit den neuen Standards Schritt zu halten, so dass den selbst gesponnenen Lösungen wichtige Verbesserungen fehlen, was natürlich nicht immer der Fall ist.
Ich habe STL für jedes Projekt von Mitte der 90er bis heute verwendet, mit Ausnahme einer kurzen Zeit bei EA. Ich denke, die Anti-STL-Seite hatte ein paar leicht rationale Gründe, es nicht zu benutzen. Die sind größtenteils weg. Benutzerdefinierte Zuweiser sind eine Lösung, die Verwendung von Reserve ist eine andere, und die Nichtübergabe von Dingen nach Wert ist eine dritte, aber diese sind recht einfach, und jeder Programmierer sollte diese kennen. Wichtiger ist jedoch die Verwendung von Algorithmen. Compiler-Autoren wissen genau, was for_each () tut, und können den Code optimieren. Das kann bei einer selbstgerollten Schleife nicht auftreten. for_each () für ein const-Objekt ist noch besser. Microsoft optimiert for_each in vielerlei Hinsicht, einschließlich der Serialisierung. Sie haben auch die AMP-Bibliothek, die parallel_for_each () hat. Wenn Sie eine Chance bekommen, sprechen Sie mit den Compiler-Ingenieuren darüber. Konsolen-Compiler werden optimieren, was verwendet wird. Ein kleines Problem mit Hühnchen und Eiern. Microsoft ist sehr stark mit C ++ 11 und die nächste XBox wird nicht anders sein. Ich habe keine Ahnung von PS4, wir haben noch keine bekommen.
Benutzerdefinierte Zuweisungen sind eine Möglichkeit, das Speicherproblem zu lösen. Eine andere (oft übersehene) Option ist die Verwendung von class based new und delete. Auf diese Weise können enorme Leistungssteigerungen erzielt werden.
Die Vorstellung, dass Boost und STL einen engen Blick auf die Lösung von Problemen haben, ist purer Wahnsinn. Ich bin verblüfft, wie viele Dinge in STL und Boost durch Eigenschaften und Richtlinien anpassbar sind. Suchen Sie nach case independent string compare als Beispiel.
In Bezug auf lange Verbindungszeiten und Code Bloat sollte das neue externe Template dabei helfen. Generell stelle ich fest, dass lange Kompilierzeiten durch übermäßige Kopplung und Missbrauch von pch entstehen.
Der überzeugendste Grund für die Verwendung von STL über homespun ist, dass Millionen von Menschen Ihnen bei der STL helfen können. Wie immer nicht vorzeitig optimieren und testen, testen, testen.