Ruby profiling

344 visualizações

Publicada em

Como usar a gem ruby-prof para fazer profiling de um código ruby.
Com isso é possível identificar de um jeito fácil, quais linhas de um programa estão consumindo mais tempo de processamento, ou memória por exemplo.
Também é apresentado um caso de uso mostrando como foi utilizada a gem e como analisar os relatórios que são gerados.

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

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
344
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Ruby profiling

  1. 1. Ruby profiling Fabio Perrella
  2. 2. Profiling Profiling is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or the frequency and duration of function calls. Wikipedia
  3. 3. PHP Xdebug (extension) KCacheGrind
  4. 4. SMTP Locaweb - Lentidão na exportação de relatórios - Como melhorar a performance?
  5. 5. SMTP Locaweb - Lentidão na exportação de relatórios - Como melhorar a performance? Gem ruby-prof !
  6. 6. Tipos de medição - wall time (tempo real decorrido entre 2 momentos) - process time - cpu time - object allocations - memory usage - garbage collection time - garbage collections runs
  7. 7. Exemplo
  8. 8. Relatório tipo graph
  9. 9. Como entender o relatório https://github.com/ruby-prof/ruby- prof/blob/master/examples/graph.txt
  10. 10. Relatório tipo stack
  11. 11. Caso de uso - projeto Saas Smtp Panel - rspec --profile
  12. 12. Código com profile
  13. 13. Resultado do profiling
  14. 14. O teste com problema
  15. 15. O código
  16. 16. A correção
  17. 17. Processo iterativo - rodar profiling - analisar relatório - corrigir problema - voltar ao 1o passo
  18. 18. Recomendações (Rails) - criar um environment “profile” - ligar cache de classes (como em prod) - utilizar massa de dados considerável - adicionar no config.ru:
  19. 19. Relatório tipo stack
  20. 20. Dúvidas?

×