e-stude.com
Dicas de Otimização em linguagem C
Fernando J. V. da Silva
fernando.silva@e-stude.com
e-stude.com

Prefira passar variáveis por referência;
Ao invés de...
void func(struct boo boo_var)
{
…
}
func(var);
Prefi...
e-stude.com
Funções
Fonte: http://www-ee.eng.hawaii.edu/~dyun/ee160/Book/chap14/subsection2.1.1.8.html
e-stude.com

Para funções pequenas, você pode usar “inline”:
inline int calc_something( int x, int y )
{
…
}

Motivo: o ...
e-stude.com
Prefira variáveis locais. Elas podem (e geralmente são)
armazenadas em registradores:
Escolha de variáveis
Fon...
e-stude.com

Prefira switch ao invés de vários if's
if( val == 1)
dostuff1();
else if (val == 2)
dostuff2();
else if (val...
e-stude.com
Prefira usar arrays de 1 dimensão ao invés de multidimensional
Vetores
Fonte: https://www.eskimo.com/~scs/ccla...
e-stude.com
Loops invertidos

Loops “for” invertidos são mais otimizados, pois a comparação
entre dois valores requer uma...
e-stude.com
Benchmark
Código Tempo Economia
Multiplicação de
Matrizes original
2622 segundos -
Vetor 1 dimensão 2607 segun...
e-stude.com

Otimize a complexidade computacional do seu algoritmo!

Reduza as operações de I/O, se possível...

Procur...
e-stude.com
Curso online de
Linguagem C
Profissional
Inscrições abertas!
Nova turma a partir de 10/04
Mais informações:
co...
Próximos SlideShares
Carregando em…5
×

Palestra otimização em linguagem c - e-stude.com

441 visualizações

Publicada em

Apresentação com o material da palestra com dicas de otimização em linguagem C, que apresentei no 11° Encontro C/C++ Brasil e na 22° Semana da Engenharia da Facens.

Publicada em: Software
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
441
No SlideShare
0
A partir de incorporações
0
Número de incorporações
13
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Palestra otimização em linguagem c - e-stude.com

  1. 1. e-stude.com Dicas de Otimização em linguagem C Fernando J. V. da Silva fernando.silva@e-stude.com
  2. 2. e-stude.com  Prefira passar variáveis por referência; Ao invés de... void func(struct boo boo_var) { … } func(var); Prefira: void func(struct boo *boo_var) { … } func(&var); Funções
  3. 3. e-stude.com Funções Fonte: http://www-ee.eng.hawaii.edu/~dyun/ee160/Book/chap14/subsection2.1.1.8.html
  4. 4. e-stude.com  Para funções pequenas, você pode usar “inline”: inline int calc_something( int x, int y ) { … }  Motivo: o compilador tenta expandir o código onde elas são chamadas (código maior, mas mais rápido) Funções
  5. 5. e-stude.com Prefira variáveis locais. Elas podem (e geralmente são) armazenadas em registradores: Escolha de variáveis Fonte: http://scienceblogs.com/goodmath/2007/06/28/graph-coloring-algorithms-1/ Variáveis Registrador a, d, e EAX c, f EBX d ECX Possível alocação de registradores
  6. 6. e-stude.com  Prefira switch ao invés de vários if's if( val == 1) dostuff1(); else if (val == 2) dostuff2(); else if (val == 3) dostuff3(); switch( val ) { case 1: dostuff1(); break; case 2: dostuff2(); break; case 3: dostuff3(); break; } Switch vs Ifs
  7. 7. e-stude.com Prefira usar arrays de 1 dimensão ao invés de multidimensional Vetores Fonte: https://www.eskimo.com/~scs/cclass/int/sx9b.html
  8. 8. e-stude.com Loops invertidos  Loops “for” invertidos são mais otimizados, pois a comparação entre dois valores requer uma instrução a mais para obter o valor da stack for (i=0; i<n; i++) for (i=n; i>0; i--) result += i; result += i;
  9. 9. e-stude.com Benchmark Código Tempo Economia Multiplicação de Matrizes original 2622 segundos - Vetor 1 dimensão 2607 segundos 15 segundos Vetor 1 dimensão + Loop invertido 2586 segundos 36 segundos  Multiplicação de 2 matrizes de int de dimensões 5000x5000
  10. 10. e-stude.com  Otimize a complexidade computacional do seu algoritmo!  Reduza as operações de I/O, se possível...  Procure conhecer as opções de otimização do seu compilador preferido!  Otimize com moderação :) E claro...
  11. 11. e-stude.com Curso online de Linguagem C Profissional Inscrições abertas! Nova turma a partir de 10/04 Mais informações: contato@e-stude.com Dúvidas? fernando.silva@e-stude.com www.e-stude.com

×