XDA Myth Busters: Linaro 4.7.4 vs. CGC 4.7

A importância de um conjunto de ferramentas otimizado é um dos tópicos mais quentes no mundo dos desenvolvedores Android. Muitos de vocês já devem ter ouvido falar do GCC e do Linaro, que são os dois maiores projetos desse tipo. GCC é um jogador experiente que foi lançado inicialmente em 1987, enquanto Linaro é um jogador relativamente jovem, com apenas quatro anos de idade.

Vamos primeiro mergulhar na história desses dois projetos. Como eu disse anteriormente, o GNU Compiler Collection é antigo. Ao longo dos anos, tem sido usado para compilar vários projetos, incluindo Android. O Google decidiu usar as versões 4.6 e 4.7 como conjuntos de ferramentas padrão, e eu gostaria de focar na versão 4.7 nesta série de testes.

Linaro foi lançado em 2010 e foi otimizado para arquiteturas ARM. E, claro, o ARM é usado na grande maioria dos smartphones e tablets com Android. Você pode encontrar o Linaro como um conjunto de ferramentas usado para compilar kernels ou ROMs inteiros, e muitos desenvolvedores afirmam que esse conjunto de ferramentas é mais rápido e poderoso que o GCC.

Inspirado por nosso administrador desenvolvedor Pulser_G2, decidi dar uma chance a esse mito e ver se essas afirmações são reais. Para fazer isso, primeiro baixei a fonte AOSP. Eu construí um aosp_mako-eng alvo para meu Nexus 4 usando o conjunto padrão de pré-construídos do Google. Depois faça otapackage, Eu tenho um arquivo zip de 183115481 bytes pronto para piscar. Depois, baixei o conjunto de ferramentas Linaro 4.7.4 e substituí o GCC em pré-construídos/gcc/linux-86. Realizei as alterações necessárias para definir o nível O3 de otimização. Como o AOSP suporta apenas kernels pré-construídos (sem modificações), eu construí um kernel sozinho com Linaro e substituí o kernel no mako-kernel pelo meu próprio blob.

 Abaixo você pode ver os dois arquivos resultantes. Como você pode ver, o arquivo Linaro é um pouco maior, então esse conjunto de ferramentas realmente faz algo nas pastas bin e xbin. O próprio arquivo do kernel também é maior.

Mas o tamanho do arquivo não é o mais importante. Em vez disso, vamos nos concentrar no desempenho. Para medir isso, usei o benchmark AnTuTu. Para aumentar a precisão, executei cada teste três vezes. Como você pode ver abaixo, a diferença é bem grande. No entanto, eu não colocaria muita fé cega nesses testes, pois os resultados diferiram em todos os testes. Dito isto, Linaro foi alguns pontos melhor que o GCC, mas o AnTuTu não é tão confiável quanto você pode imaginar.

CCG

Linaro

Os testes a seguir foram realizados com 3DMark para verificar se um conjunto de ferramentas pode afetar o desempenho gráfico. A diferença foi ainda mais significativa do que com o Antutu. Você pode ganhar poucos FPS com o GCC, mas a suavidade geral é melhor com o Linaro. A pontuação também é um pouco maior.

CCG

Linaro

O teste final foi realizado utilizando o jogo Asphalt 8: Airborne. Abaixo você pode ver dois vídeos do jogo rodando em ambos os toolchains. A primeira foi feita com Linaro, a segunda com GCC. Pessoalmente, acho que o Linaro parece um pouco mais suave do que o GCC, mas isso pode ser apenas o efeito placebo, já que este não foi um teste duplo-cego. Ambos os kernels estavam disponíveis e livres de ajustes, overclock e quaisquer outros ajustes sofisticados para melhorar o desempenho.

//www.youtube.com/embed/BZRZenaNr9A

Então Linaro é melhor?

Embora eu estivesse cético no início, devo admitir que o Linaro parece ser uma escolha melhor do que o GCC, pelo menos na minha configuração de hardware. O sistema operacional parecia mais responsivo e rápido do que quando foi desenvolvido usando o GCC. No entanto, o GCC ainda é sólido como uma rocha, portanto, se você precisar de estabilidade máxima, ainda pode ser a melhor escolha.

Nos próximos episódios, tentarei comparar outros toolchains como SaberMod e Linaro 4.8. Informe-nos sobre seus conjuntos de ferramentas favoritos nos comentários abaixo. E se você quiser que testemos qualquer outro conjunto de ferramentas, por favor, diga!