Ich werde derjenige sein, der hier gegen den Strich geht und sagen, es ist nie zu früh, etwas über Optimierungen zu lernen , insbesondere über Baugruppenoptimierungen und, was noch wichtiger ist, über das Debuggen in der Baugruppe. Ich glaube, dass Sie den größtmöglichen Nutzen daraus ziehen werden, wenn Sie ein Student sind (weil Sie dann sehr wenig zu verlieren haben (dh zeitlich / geldmäßig)) und alles, was Sie gewinnen können.
Wenn Sie in der Branche tätig sind und nicht die Aufgabe haben, in der Montage herumzubasteln, dann tun Sie das nicht. Wenn Sie ein Student sind oder Zeit im Allgemeinen haben, würde ich die Zeit finden, um zu lernen, Programme zu zerlegen und zu sehen, ob ich eine bessere Lösung als der Compiler finden kann. Wenn ich nicht kann, wen interessiert das? Ich habe gerade gelernt, wie man neben dem Compiler auch schreibt, und das ist ein RIESIGES Plus, wenn man mit einem Fehler im Release-Code (ohne Fehlersymbole) konfrontiert ist und auf die Demontage starrt, denn das ist das einzige, worauf man achten kann.
Die Antwort
Dies ist eine der besten Ressourcen, die ich zum Erlernen von Optimierungen gefunden habe.
http://www.agner.org/optimize/
Das Geschwätz
Wenn Sie einige Artikel von großen Entwicklern lesen (zum Beispiel, wenn Sie die Gründe für die Erstellung von EASTL und die nähere Betrachtung des Codes prüfen, werden Sie zu Kommentaren wie diesem geführt, weil GCC schrecklich darin ist, diese if - Anweisung einzutragen , aus der hervorgeht, wovon die Mehrheit stammt) Die Leute sagen, Sie vertrauen darauf, dass der Compiler nicht immer richtig ist (vor allem in der Spieleentwicklung). Wenn Sie dann in der Branche Fuß fassen, werden Sie feststellen, dass Optimierungen alltäglich sind und zu wissen, was die Assembly-Ausgabe bedeutet, ein großes Plus ist. Außerdem scheinen die Leute (insbesondere beim Stackoverflow) nicht zu erkennen, dass das Erstellen von Profilen für Spiele sehr schwierig und nicht immer genau ist.
Es gibt jedoch eine Einschränkung. Sie können Zeit damit verbringen, etwas zu optimieren, und später feststellen, dass Zeit verschwendet wurde. Aber was hast du gelernt? Sie haben gelernt, denselben Fehler unter ähnlichen Umständen nicht zu wiederholen.
Was SO jetzt einnimmt, ist meiner Meinung nach eine religiöse Haltung zu der Aussage , nicht zu optimieren, bis Sie sich profilieren und sich keine Sorgen machen, der Compiler weiß es besser als Sie . Es behindert das Lernen. Ich kenne Experten in der Branche, die sehr gutes Geld erhalten (und ich meine SEHR gutes Geld), um bei der Zusammenstellung herumzuspielen, um das Spiel zu optimieren und Fehler zu beheben, weil der Compiler schlecht darin ist oder Ihnen einfach nicht helfen kann, weil es gut ist kann nicht (GPU-bezogene Abstürze, Abstürze, bei denen Daten in einem Debugger nicht einlesbar sind usw. usw.)!
Was ist, wenn jemand, der das liebt, es noch nicht vollständig erkannt hat, die Frage hier stellt und von den vielen Antworten, die der Compiler kennt, besser als Sie ab- oder abgeschaltet wird? und wird nie einer dieser hochbezahlten Programmierer?
Ein letzter Gedanke. Wenn Sie dies frühzeitig tun, werden Sie feststellen, dass Sie bald anfangen, Code zu schreiben, der im schlimmsten Fall keine Leistungsverbesserungen aufweist, da der Compiler ihn auf die gleiche Weise optimiert hat oder bestenfalls einige Leistungsverbesserungen aufweist, da der Compiler ihn jetzt optimieren kann . In beiden Fällen ist es zur Gewohnheit geworden, und Sie können Code nicht langsamer schreiben als zuvor. Einige Beispiele sind (es gibt viele weitere):
- Pre-Incrementing, es sei denn, Sie möchten wirklich ein Post-Incrementing durchführen
- Schreiben von Schleifen für Container unter Verwendung einer konstanten lokalen Größenvariablen, anstatt size () für den Container innerhalb der Schleife aufzurufen.
EDIT: Update nach 8 weiteren Jahren in der Branche. Montage lernen. Erfahren Sie, wie Optimierer funktionieren und welche Assembly sie generieren (CompilerExplorer ist ein großartiges Tool dafür). Ich habe unzählige Abstürze in Test-Builds (optimierte Builds für interne Tests) festgestellt, bei denen Sie sich auch mit Debug-Symbolen nicht auf den Debugger verlassen können. Der Compiler hat zu viele Dinge optimiert und die Assembly ist Ihre einzige wertvolle Informationsquelle, um den Fehler aus dem Absturzdump zu finden. Jeder Build dauert 30-40 Minuten, wenn Sie Glück haben und an erster Stelle in der Build-Warteschlange stehen. Sie können sich also nicht auf einige traditionelle Techniken verlassen, um den Fehler zu isolieren. Multiplayer macht es noch schlimmer. Wenn Sie die Baugruppe kennen und wissen, wie Sie die optimierte Baugruppe lesen, werden Sie einfach besser und letztendlich wertvoller für das Team.