Estou trabalhando nisso em áreas onde não há SLA de desempenho. Quando se trata de renderizadores offline em computação gráfica, não há "desempenho satisfatório" para os usuários, porque eles já estão gastando enormes somas de dinheiro para distribuir a computação nas nuvens e renderizar farms, mesmo com os renderizadores de última geração para produzir imagens e quadros com qualidade de produção para filmes, por exemplo
Mas devo dizer, como alguém que trabalha neste domínio há muitos anos que qualquer solução que degrada significativamente a capacidade de manutenção em favor da eficiência está realmente trabalhando contra os requisitos de desempenho em constante mudança. Como se você não conseguir manter sua solução efetivamente nos próximos anos, conforme as coisas estão mudando sob seus pés (tanto em termos de código envolvente quanto no que os usuários esperam que os concorrentes continuem se superando), sua solução já está trabalhando para a obsolescência e necessidade de substituição por atacado.
Não vejo o objetivo final de criadores de perfil como o VTune como uma maneira de tornar meu código mais rápido. O valor final deles é garantir que não diminua minha produtividade para atender às crescentes demandas de desempenho. Se eu absolutamente precisar aplicar alguma micro-otimização de aparência grosseira, o criador de perfil, combinado com a execução em casos de usuários do mundo real (e não em alguns casos de teste que eu imagino que possam ser importantes), garantirá a aplicação inevitável de aparência grosseira otimizações muito, muito criteriosamente, apenas para os principais pontos de acesso que aparecem, além de documentá-los com muito cuidado, porque inevitavelmente terei que revisitar, manter, ajustar e alterá-los nos próximos anos, se essa solução permanecer viável.
E, especialmente, se sua solução otimizada envolver mais acoplamento, eu realmente relutarei em usá-la. Entre as métricas mais valiosas que eu apreciei nas áreas mais críticas de desempenho da base de código, está o desacoplamento (como minimizar a quantidade de informações que algo precisa trabalhar, o que também minimiza a probabilidade de exigir mudanças, a menos que precise diretamente de alterações). ), porque essas áreas críticas multiplicam significativamente os motivos pelos quais as coisas mudam. O que significa que, quanto menos informações forem necessárias para o trabalho, menos razões haverá para a mudança e minimizar essas razões é uma parte enorme da melhoria da produtividade em minhas áreas específicas de foco, porque as coisas terão que mudar constantemente de qualquer maneira (nós se tornará obsoleto em um ano),
Para mim, as melhores e mais eficazes soluções que encontrei são aquelas em que eficiência, manutenção e produtividade não são diametralmente opostas uma à outra. A busca para mim é tentar tornar esses conceitos o mais harmoniosos possível.