Je serai celui qui va à contre-courant ici et je dirai qu'il n'est jamais trop tôt pour en savoir plus sur les optimisations, en particulier les optimisations d'assemblage et, plus important encore, le débogage en assemblage. Je crois que vous en tirerez le maximum d'avantages si vous êtes étudiant (car alors vous avez très peu à perdre [c.-à-d. En termes de temps / argent]) et tout à gagner.
Si vous êtes dans l'industrie et n'êtes pas chargé de bricoler dans l'assemblage, alors ne le faites pas. Sinon, si vous êtes étudiant ou avez du temps en général, je trouverais le temps d'apprendre à désassembler des programmes et voir si je peux trouver une meilleure solution que le compilateur. Si je ne peux pas, peu importe! Je viens d'apprendre à écrire ainsi qu'à compiler et c'est un énorme avantage lorsque vous êtes confronté à un bogue dans le code de version (sans symboles de débogage) et à regarder le démontage parce que c'est la seule chose que vous pouvez regarder.
La réponse
C'est l'une des meilleures ressources que j'ai trouvées pour en savoir plus sur les optimisations.
http://www.agner.org/optimize/
La diatribe
Si vous lisez certains articles de grands développeurs (par exemple, le raisonnement derrière la création d'EASTL et une inspection plus approfondie du code vous mèneront à des commentaires comme celui -ci parce que GCC est terrible à intégrer cette déclaration if qui vous dira, ce que la majorité des les gens vous disent que le compilateur n'a pas toujours raison, EN PARTICULIER dans le développement de jeux) et puis mettez le pied dans l'industrie, vous constaterez que les optimisations sont une chose quotidienne et savoir ce que signifie la sortie de l'assemblage est un gros plus. De plus, les gens ne semblent pas se rendre compte (en particulier sur stackoverflow) que le profilage des jeux est très difficile et pas toujours précis.
Il y a cependant une mise en garde. Vous pouvez passer du temps à optimiser quelque chose et plus tard vous rendre compte que c'était du temps perdu. Mais qu'avez-vous appris? Vous avez appris à ne pas répéter cette même erreur dans une circonstance similaire.
Ce que SO prend maintenant est à mon avis une position religieuse à la déclaration ne pas optimiser jusqu'à ce que vous profiliez et ne vous inquiétez pas, le compilateur sait mieux que vous . Cela entrave l'apprentissage. Je connais des experts de l'industrie qui sont très bien payés (et je veux dire TRÈS bien) pour jouer en assembleur afin d'optimiser le jeu et de le déboguer parce que le compilateur est mauvais ou ne peut tout simplement pas vous aider, car, eh bien, il ne peut pas (plantages liés au GPU, plantages où les données impliquées sont impossibles à lire dans un débogueur, etc., etc.)!
Et si quelqu'un qui aime faire cela, ne l'a pas encore complètement réalisé, pose la question ici et est désactivé / désactivé par les nombreuses réponses que le compilateur connaît mieux que vous! et ne devient jamais l'un de ces programmeurs hautement payés?
Une dernière pensée. Si vous commencez à le faire tôt, vous constaterez que bientôt vous commencerez à écrire du code qui est au pire, n'a aucune amélioration des performances parce que le compilateur l'a optimisé de la même manière ou au mieux, a quelques améliorations de performances car maintenant le compilateur peut l'optimiser . Dans les deux cas, c'est devenu une habitude, et vous n'êtes pas plus lent à écrire du code de cette façon que ce que vous avez fait auparavant. Quelques exemples sont (il y en a beaucoup plus):
- Pré-incrémentation sauf si vous voulez vraiment post-incrémentation
- Écriture de boucles pour les conteneurs à l'aide d'une variable de taille locale constante plutôt que d'appeler size () sur le conteneur dans la boucle.
EDIT: mise à jour après 8 ans de plus dans l'industrie. Apprenez l'assemblage. Apprenez comment les optimiseurs fonctionnent et l'assemblage qu'ils génèrent (CompilerExplorer est un excellent outil pour cela). J'ai rencontré d'innombrables plantages dans les versions de test (versions optimisées pour les tests internes) où vous ne pouvez pas compter sur le débogueur même avec des symboles de débogage. Le compilateur a optimisé trop de choses et l'assembly est votre seule source d'informations précieuses pour trouver le bogue du crash dump. Chaque build prend 30 à 40 minutes si vous êtes chanceux et premier dans la file d'attente de build - vous ne pouvez donc pas compter sur certaines techniques traditionnelles pour isoler le bogue. Le multijoueur aggrave les choses. Connaître l'assemblage et savoir lire l'assemblage optimisé vous rendra simplement meilleur et finalement plus précieux pour l'équipe.