File size and smartlinking/pt
│
Deutsch (de) │
English (en) │
français (fr) │
日本語 (ja) │
português (pt) │
中文(中国大陆) (zh_CN) │
Este artigo é um "work in progress" sobre tamanho do executável e smartlinking em Lazarus. Esteja à vontade para contribuir.
Introdução
Estudo de Caso 1 em Windows
Este estudo de caso foi realizado em 8 de fevereiro de 2006 porque uma versão com SmartLinking (0.9.12) foi publicada. Ele pretende estabelecer uma relação entre a variação dos resultados abaixo e diferentes versões do Lazarus e do compilador FreePascal, tanto quanto entre versões com e sem o SmartLinking. As variáveis estudadas são:
- Tamanho do executável depois de usar o strip.exe
- Tamanho do executável depois de usar o upx.exe
- Tempo de linkagem
O tempo de compilação não é considerado aqui porque é muito similar em todas as configurações e muito menos significativo que o tempo de linkagem. O tamanho do executável sem o strip.exe não incluído. Note que o strip é usado sempre da linha de comando com:
strip --strip-all magnifier.exe
O programa sendo compilado é o Virtual Magnifying Glass. Os fontes e o arquivo binário estão disponíiveis para download em http://magnifier.sourceforge.net Sobre o tempo de linkagem note que o computador utilizado é um Pentium 4 3.2GHz, placa-mãe Intel e processador dual core com 512MB de RAM.
Resultados
O sistema operacional é o Windows XP e as versões 0.9.13 são da mesma data em que a versão 0.9.12 foi publicada. A comparação foi feita usando a seguinte configuração de software:
- Lazarus 0.9.12 disponível aqui. Free Pascal 2.0.2 que vem com o instalador do Lazarus. LCL e RTL são smartlinked. Referidos daqui para diante 0.9.12.
- Lazarus 0.9.13 baixado do Subversion na mesma data. Free Pascal 2.0.2 instalado separadamente. LCL não smartlinked. Referidos daqui para diante como 0.9.13 + 2.0.2
- Lazarus 0.9.13 snapshot. Free Pascal 2.1 que vem com o instalador do Lazarus. LCL não smartlinked. Referidos daqui para diante como 0.9.13 + 2.1.
- Lazarus 0.9.13 snapshot. Free Pascal 2.1 que vem com o instalador do Lazarus. A LCL é smartlinked. Referidos daqui para diante como 0.9.13 + 2.1 + SL.
0.9.12 | 0.9.13 + 2.0.2 | 0.9.13 + 2.1 + SL | 0.9.13 + 2.1 | |
---|---|---|---|---|
Tamanho do executável depois do strip (em bytes) | 1108480 | 1587712 | 1425408 | 1649152 |
Tamanho do executável depois do UPX (em bytes) | 318976 | 438272 | 388608 | 454144 |
Tempo de Linkagem | 15 seconds | 5 seconds | 45 seconds | 10 seconds |
Conclusão
O snapshot do 0.9.13 de 8 de fevereiro de 2006 gera um compilador instável da 2.1 branch, que resulta em um executável maior e um SmartLinking mais lento quando comparado com outras versões.
A versão 0.9.12 teve o melhor tamanho de executável de todas, com ou sem upx, demonstrando que SmartLinking pode realmente diminuir o tamanho do executável no Windows. Entretanto isso tem um custo, que é o tempo de linkagem de aproximadamente 3 vezes maior que o tempo sem SmartLinking.
A versão 0.9.12 já vem com o SmartLinking em Windows pré-configurado. Não era o caso nas versões anteriores.
Veja também
- Guide for anyone inexperienced in getting FPC and Lazarus to work properly.