Os pacotes do repositório Debian para i386, por padrão, são compilados sem nenhum tipo de otimização. Consequentemente alguns aplicativos não desempenham bem. Por exemplo maquinas virtuais, emuladores e aplicativos gráficos.
Por sorte, é possível contornar esse problema compilando esses pacotes.
Os compiladores GCC possuem opções de performance, ativados pelos “Compiler Flags”. Por exemplo, para compilar com o maior número de otimizações e as instruções SSE2 ativadas, o comando
CXXFLAGS='-O3 -march=native -mfpmath=sse -msse2',
deve fornecer um bom incremento.
Alguns aplicativos também podem fornecer outras possibilidades. Exemplo:
CXXFLAGS='-O3 -march=native -mfpmath=sse -msse2'
./configure --enable-osmesa --prefix=/opt/desmume/.
A opção
--enable-osmesa melhorou sutilmente o desempenho do Desmume.
O problema é que o binário gerado terá compatibilidade limitada. Por isso os pacotes Debian são compilados sem esses recursos.
É comum compilar programas para executar em computadores que se conheçe. Nesse caso, suponha que o programa será utilizado em maquinas com processador Intel Core de segunda geração. Podemos compilar com otimizações para essa plataforma usando march=corei7-avx. Por exemplo, com o GNU GCC 4.6.1:
CFLAGS='-O3 -march=corei7-avx -mfpmath=sse -msse2'
./configure --prefix=/opt/bluefish
Com essas opções, o tempo para compilar diminuiu drasticamente. E naturalmente, os binários serão compativeis com qualquer computador com Intel core de segunda geração.
Quanto a performance, veja o
benchmark feito pelo Phoronix e
esse interessante comentário. Experimente também:
CFLAGS='-O3 -march=corei7-avx -mfpmath=sse -msse3 -mtune=corei7-avx -flto -fwhole-program'
./configure --prefix=/opt/bluefish
Segundo a documentação do GNU GCC, o comando -march gera código otimizado para arquitetura alvo. Utilizando march=native gera código com todas as otimizações possíveis para o processador atual, uma vez que march implica mtune.
Saiba mais em:
http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html,
http://gcc.gnu.org/onlinedocs/gcc-3.4.5/gcc/Optimize-Options.html,
http://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Compiler_and_assembler_support.