Ich habe kürzlich zwei wirklich nette und lehrreiche Sprachgespräche gesehen:
Diese erste von Herb Sutter zeigt alle netten und coolen Funktionen von C ++ 0x, warum die Zukunft von C ++ besser als je zuvor erscheint und wie M $ in diesem Spiel als guter Kerl gilt. Der Vortrag dreht sich um Effizienz und wie die Minimierung der Heap-Aktivität sehr oft die Leistung verbessert.
Das andere , von Andrei Alexandrescu, motiviert einen Übergang von C / C ++ zu seinem neuen Spiel-Wechsler D . Die meisten Sachen von D scheinen wirklich gut motiviert und gestaltet zu sein. Eines hat mich jedoch überrascht, nämlich dass D auf Garbage Collection drängt und dass alle Klassen nur durch Referenz erstellt werden . Noch verwirrender ist, dass das Buch The D Programming Language Ref Manual speziell im Abschnitt über Ressourcenmanagement Folgendes zitiert:
Durch die Speicherbereinigung entfällt der mühsame, fehleranfällige Speicherzuordnungs-Tracking-Code, der in C und C ++ erforderlich ist. Dies bedeutet nicht nur eine viel schnellere Entwicklungszeit und geringere Wartungskosten, sondern das resultierende Programm läuft häufig schneller !
Dies steht im Widerspruch zu Sutters ständigem Gerede über die Minimierung der Heap-Aktivität. Ich respektiere sowohl Sutters als auch Alexandrescous Erkenntnisse sehr und bin daher etwas verwirrt über diese beiden Schlüsselfragen
Führt das Erstellen von Klasseninstanzen nicht nur als Referenz zu einer Menge unnötiger Heap-Aktivitäten?
In welchen Fällen können wir die Garbage Collection verwenden, ohne die Laufzeitleistung zu beeinträchtigen?