AVISO: Responda com base na própria experiência - YMMV
Se o código for realmente computacionalmente caro, sim, definitivamente . Eu tenho visto uma melhoria de mais de 20x vezes com o antigo Intel C ++ Compiler (agora Intel Studio se bem me lembro) vs o Microsoft Visual C ++ Compiler padrão. É verdade que o código estava muito longe da perfeição e que pode ter desempenhado um papel (na verdade é por isso que nos incomodamos em usar o compilador Intel, foi mais fácil do que refatorar o gigante codebase), também o processador usado para rodar o código era um Intel Core 2 Quad, que é o processador perfeito para isso, mas os resultados foram chocantes. O próprio compilador contém inúmeras maneiras de otimizar o código, incluindo o direcionamento de uma CPU específica em termos de, digamos, recursos de SSE . Isso realmente faz com que -O2
/ -O3
fique com vergonha. E isso foi antes usando o profiler.
Note que, no entanto, ativar otimizações realmente agressivas fará com que a compilação leve algum tempo, duas horas para um grande projeto não é impossível. Além disso, com altos níveis de otimizações, há uma chance maior de um erro no código se manifestar (isso também pode ser observado com o gcc -O3
). Para um projeto que você conhece bem, isso pode ser uma vantagem, já que você encontrará e consertará qualquer bugs que você não tenha detectado antes, mas ao compilar uma bagunça, você apenas cruza os dedos e reza para os deuses x86. / p>
Algo sobre desempenho em máquinas AMD: Não é tão bom quanto os processadores Intel, mas ainda é caminho melhor que o compilador MS C ++ (novamente, da minha experiência). O motivo é que você também pode segmentar uma CPU genérica com suporte para SSE2 (por exemplo). Então, os processadores AMD com SSE2 não serão muito discriminados. O compilador da Intel no CPU Intel realmente rouba o show, no entanto. Não são todos os arco-íris duplos e unicórnios brilhantes, no entanto. Tem havido algumas acusações pesadas sobre binários que não rodam em todos os processadores não GenuineIntel e (este é admitido) um desempenho inferior induzido artificialmente em CPUs de outros fornecedores . Observe também que esta é uma informação de pelo menos 3 anos atrás e sua validade a partir de agora é desconhecida, MAS as novas descrições de produtos dão aos binários uma carta branca para rodar tão lentamente quanto a Intel julgar adequada em CPUs não Intel.
Eu não sei o que é sobre a Intel e por que eles fazem tão boas ferramentas de computação numérica, mas dê uma olhada nisso também: link . Há uma comparação e se você olhar para a última linha, MATLAB brilha ao derrotar tanto o código C como Julia , o que me impressiona é que os autores acham que o motivo é a Intel Biblioteca de Kernel Matemático .
Eu percebo que isso soa muito como um anúncio para o kit de ferramentas Intel Compiler, mas na minha experiência ele realmente fez o trabalho bem, e até a lógica simples dita que os caras que fazem CPUs deveriam saber como programar para eles. IMO, o compilador Intel C ++, extrai o máximo possível de ganho de desempenho.