GCC 4.9 e os cacarecos
Das notas de lançamento do GCC 4.9:
-march=generic has been retuned for better support of Intel core and AMD Bulldozer architectures. Performance of AMD K7, K8, Intel Pentium-M, and Pentium4 based CPUs is no longer considered important for generic.
Na verdade tem um erro no texto, pois não existe
Quando desempenho é um fator crítico, programas costumam ter assembly feito à mão para autodetectar e usar durante a execução instruções adicionais sem depender do compilador para gerar código de máquina em determinadas partes (um montador é usado). Ainda assim é bem-vindo o GCC dar uma otimizada geral onde conseguir.
-march=generic has been retuned for better support of Intel core and AMD Bulldozer architectures. Performance of AMD K7, K8, Intel Pentium-M, and Pentium4 based CPUs is no longer considered important for generic.
Na verdade tem um erro no texto, pois não existe
-march=generic
, apenas -mtune=generic
. Como todas as distribuições compilam seus pacotes com -mtune=generic
, essa é uma excelente notícia! Ajustar código para processadores defuntos não fazia sentido. Os binários ainda rodarão em modelos que sejam compatíveis com o que estiver configurado em -march
(nivelado por baixo geralmente: i686
para 32-bit e x86-64
para 64-bit), sem exigir instruções posteriores, mas o GCC otimizará para arquiteturas atuais.Quando desempenho é um fator crítico, programas costumam ter assembly feito à mão para autodetectar e usar durante a execução instruções adicionais sem depender do compilador para gerar código de máquina em determinadas partes (um montador é usado). Ainda assim é bem-vindo o GCC dar uma otimizada geral onde conseguir.
Realmente não há motivos para ficar mantendo tanta tecnologia de legado. O próprio Linus tempos atrás falou que também o kernel Linux estava precisando de uma faxina urgente.
ResponderExcluirAdicionarei as tags 'windows' e 'osx' neste post pois o GCC gera código para as duas plataformas também. Tem um monte de programa por aí compilado com o MinGW.
ExcluirMesmo o Linux sendo um kernel monolítico (by design), a modularidade dos módulos (desculpe a redundância) dá conta da questão do uso de recursos. Não vejo como um problema gravíssimo. Os problemas mais urgentes estão no espaço de usuário.