[AsteriskBrasil] Script AGI em C
dioedu@yahoo.com.br
dioedu em yahoo.com.br
Segunda Maio 22 14:31:43 BRT 2006
Falae Cleviton,
On Monday 22 May 2006 06:59, cleviton.araujo em caixa.gov.br wrote:
> Pessoal:
>
> Executei o comando gcc -Os fonte.c -o executavel.agi várias vezes, com
> flags de otimização diferentes. Máximo que consegui reduzir o tamanho do
> executável foi para 17 vezes.
>
> O tamanho do fonte cheio de comentário é 448 Bytes;
> O executável ficou em 7315 Bytes. (o máximo que conseguir reduzir)
>
> Eu esperava que o tamanho do executável ficasse na ordem de grandeza do
> próprio fonte, já que os comentários são extensos.
>
> Alguém consegue explicar o porque disso?
> Esse overhead se deve a linkagem com o sistema operacional? porque da
> stdio.h o script só usa quatro funções. Fica parecendo que o compilador
> incluir todas as funções de stdio.h e as compila. Gostaria que alguém da
> lista dirimisse minha dúvida.
É exatamente isso. Ao compilar o código incluindo a stdio.h, todas as funções
declaradas neste header são compiladas também. A única possibilidade de se
diminuir mais ainda (observando que 7 K para um programa em C é extremamente
"leve" para execução), é alterando o stdio.h. Mas acho que não vale a pena.
Só para explicar um pouco mais, existem programas compilados (por exemplo, C)
e interpretados (por exemplo, PHP). Os compilados, geram um código
Hexadecimal que é executado diretamente pelo processador. O interpretado, o
processador chama o interpretador, que efetua uma "conversão online" do
código escrito para hexadecimal que é o que o processador entende.
Concluindo, o programa C pode ser maior do que um código PHP, mas NUNCA
consumirá mais processador.
Diógenes Makibara
Mais detalhes sobre a lista de discussão AsteriskBrasil