Eu serei o oposto aqui e direi que nunca é cedo para aprender sobre otimizações, especialmente otimizações de montagem e, mais importante, depuração na montagem. Eu acredito que você obterá o benefício máximo disso se for um estudante (porque então você tem muito pouco a perder [isto é, tempo / dinheiro]) e tudo a ganhar.
Se você está no setor e não tem a tarefa de mexer na montagem, não o faça. Caso contrário, se você é um estudante ou tem tempo em geral, eu encontraria tempo para aprender a desmontar programas e ver se consigo encontrar uma solução melhor que o compilador. Se não posso, quem se importa! Eu apenas aprendi a escrever, assim como o compilador, e isso é uma enorme vantagem quando você se depara com um bug no código de liberação (sem símbolos de depuração) e olhando para a desmontagem porque é a única coisa que você pode ver.
A resposta
Este é um dos melhores recursos que encontrei para aprender sobre otimizações.
http://www.agner.org/optimize/
O discurso retórico
Se você ler alguns artigos de grandes desenvolvedores (por exemplo, o raciocínio por trás da criação do EASTL e uma inspeção mais detalhada do código o levará a comentários como o fez, porque o GCC é péssimo em incluir essa declaração if que informará o que a maioria dos as pessoas dizem que você confia que o compilador nem sempre está certo, ESPECIALMENTE no desenvolvimento de jogos) e, em seguida, colocam os pés no setor, você descobrirá que as otimizações são comuns e saber o que significa a saída da montagem é uma grande vantagem. Além disso, as pessoas parecem não perceber (especialmente no stackoverflow) que a criação de perfis de jogos é muito difícil e nem sempre precisa.
Há uma ressalva. Você pode gastar tempo otimizando algo e depois perceber que foi um desperdício de tempo. Mas o que você aprendeu? Você aprendeu a não repetir o mesmo erro em uma circunstância semelhante.
O que o SO está adotando agora é, na minha opinião, uma posição religiosa para a afirmação não otimizar até você criar um perfil e não se preocupe, o compilador sabe melhor do que você . Isso dificulta o aprendizado. Conheço especialistas do setor que recebem muito dinheiro bom (e quero dizer MUITO bom dinheiro) para mexer na montagem para otimizar o jogo e depurá-lo porque o compilador é ruim ou simplesmente não pode ajudá-lo, porque, bem, ele não pode (falhas relacionadas à GPU, falhas nas quais é impossível ler os dados envolvidos em um depurador etc. etc.)!
E se alguém que adora fazer isso, ainda não o percebeu completamente, fizer a pergunta aqui e for desligado / desabilitado pelas muitas respostas que o compilador conhece melhor que você! e nunca se torna um daqueles programadores altamente pagos?
Um pensamento final. Se você começar a fazer isso mais cedo, descobrirá que em breve começará a escrever um código que, na pior das hipóteses, não possui melhorias de desempenho porque o compilador a otimizou da mesma maneira ou, na melhor das hipóteses, tem algumas melhorias de desempenho porque agora o compilador pode otimizá-lo . Em ambos os casos, tornou-se um hábito e você não é mais lento ao escrever código dessa maneira do que antes. Alguns exemplos são (existem muitos mais):
- Pré-incremento, a menos que você realmente queira pós-incremento
- Gravando loops para contêineres usando uma variável de tamanho local constante, em vez de chamar size () no contêiner dentro do loop.
EDIT: Atualização após mais 8 anos no setor. Aprenda montagem. Aprenda como os otimizadores funcionam e a montagem que eles geram (CompilerExplorer é uma ótima ferramenta para isso). Eu já deparei com inúmeras falhas nas compilações de teste (compilações otimizadas para testes internos) nas quais você não pode confiar no depurador, mesmo com símbolos de depuração. O compilador otimizou muitas coisas e o assembly é sua única fonte de informações valiosas para encontrar o bug do despejo de memória. Cada build leva 30 a 40 minutos se você tiver sorte e for o primeiro na fila de build - portanto, você não pode confiar em algumas técnicas tradicionais para isolar o bug. O multiplayer piora as coisas. Conhecer a montagem e ler a montagem otimizada simplesmente o tornará melhor e, em última análise, mais valioso para a equipe.