Bom dia a todos,
O
FaceBook (
Meta) tem estado a desenvolver internamente já à uns anos uma ferramenta chamada
BOLT que faz a
otimização do Layout do ficheiro de executável de Linux, o ELF.
Esta ferramenta é particularmente efetiva pois permite um grande aumento de performance a todos os programas compilados em GCC e em LLVM, escritos em N linguagens de programação, coisas como
C/C++, Rust, mas também muitas outras que usam o compilador do GCC e LLVM como backend. Mesmo que o suporte para a vossa linguagem não esteja lá neste momento, em breve deve aparecer esse suporte para mais esta ferramenta.
BOLT Merged Into LLVM To Optimize Binaries For Faster Performancehttps://www.phoronix.com/scan.php?page=news_item&px=LLVM-Lands-BOLTAté coisas como o
próprio compilador GCC e o
próprio compilador LLVM ficam mais rápidos a executar se forem compilados usando o BOLT e a o ganho de performance é mesmo muito grande.
Estamos a falar de coisas como
36 % para o LLVM e
21 % para o GCC. O aumento de performance máximo atinge-se quando ligamos as três opções de optimização:
1.
BOLT2.
LTO – Link Time Optimization
3.
PGO – Profile Guided Optimization
Podendo atingir na execução do compilador
Clang um aumento de performance na casa dos
49.42 % segundo os gráficos da página em cima. A que corresponde uma diminuição brutal dos tempos de compilação.
No caso dos exemplos dados na página anterior os
binários que possam ser compilados com Clang LLVM. quando as 3 estratégias de otimização são combinadas, pode vir a ter um aumento entre os
34 % e os
68.5 %, ora isso é um aumento de performance mesmo muito grande! E isto sem alterar uma unica linha de código. E isto é para além das optimizações normais dos compiladores o -O3 e afins.
E até o
Kernel de Linux tem muito a ganhar pelo facto de ser compilado com este otimizador de de Layout de ELF, pois a sua performance aumenta com repercussões em todo o sistema, por estarmos a falar do Kernel.
Facebook Has Been Working On BOLT'ing The Linux Kernel For Greater Performancehttps://www.phoronix.com/scan.php?page=news_item&px=Facebook-BOLTing-The-KernelNeste momento
a code tree do BOLT foi “merged” para dentro do projecto do LLVM pelo que a sua integração ainda deve ser melhor.
Estes são desenvolvimentos muito interessantes que nos vão trazer grandes aumentos de performance a custo zero.
Pensem nas toneladas de dióxido de carbono que vão ser geradas a menos por todos os computadores de todo o mundo, pela diminuição da necessidade de recursos físicos para um determinado projeto e pela diminuição de consumo de energia em todos os computadores.Obrigado,
Cumprimentos,
João