SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Ruby profiling
Fabio Perrella
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
PHP
Xdebug (extension)
KCacheGrind
SMTP Locaweb
- Lentidão na exportação de relatórios
- Como melhorar a performance?
SMTP Locaweb
- Lentidão na exportação de relatórios
- Como melhorar a performance?
Gem ruby-prof !
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
Exemplo
Relatório tipo graph
Como entender o relatório
https://github.com/ruby-prof/ruby-
prof/blob/master/examples/graph.txt
Relatório tipo stack
Caso de uso
- projeto Saas Smtp Panel
- rspec --profile
Código com profile
Resultado do profiling
O teste com problema
O código
A correção
Processo iterativo
- rodar profiling
- analisar relatório
- corrigir problema
- voltar ao 1o passo
Recomendações (Rails)
- criar um environment “profile”
- ligar cache de classes (como em prod)
- utilizar massa de dados considerável
- adicionar no config.ru:
Relatório tipo stack
Dúvidas?

Mais conteúdo relacionado

Mais procurados

Desmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQLDesmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQLEuler Taveira
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise críticapichiliani
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQLEuler Taveira
 
3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...
3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...
3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...Lucas Mellos Carlos
 
Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Euler Taveira
 
TASSEL - Trait Analysis by aSSociation, Evolution and Linkage
TASSEL - Trait Analysis by aSSociation, Evolution and LinkageTASSEL - Trait Analysis by aSSociation, Evolution and Linkage
TASSEL - Trait Analysis by aSSociation, Evolution and LinkageMarcos Castro
 
JVM and Tools - ESIG Academy
JVM and Tools - ESIG AcademyJVM and Tools - ESIG Academy
JVM and Tools - ESIG AcademyGleydson Lima
 

Mais procurados (10)

Desmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQLDesmistificando Replicação no PostgreSQL
Desmistificando Replicação no PostgreSQL
 
Zabbix 3 0-cinfotec
Zabbix 3 0-cinfotecZabbix 3 0-cinfotec
Zabbix 3 0-cinfotec
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise crítica
 
Postgres nuvens
Postgres nuvensPostgres nuvens
Postgres nuvens
 
Function as a Service no OpenFaaS com Docker e PHP
Function as a Service no OpenFaaS com Docker e PHPFunction as a Service no OpenFaaS com Docker e PHP
Function as a Service no OpenFaaS com Docker e PHP
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQL
 
3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...
3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...
3º SICT-SUL - Comparativo da taxa de transferência no uso dos protocolos de i...
 
Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10
 
TASSEL - Trait Analysis by aSSociation, Evolution and Linkage
TASSEL - Trait Analysis by aSSociation, Evolution and LinkageTASSEL - Trait Analysis by aSSociation, Evolution and Linkage
TASSEL - Trait Analysis by aSSociation, Evolution and Linkage
 
JVM and Tools - ESIG Academy
JVM and Tools - ESIG AcademyJVM and Tools - ESIG Academy
JVM and Tools - ESIG Academy
 

Destaque

Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 
Coisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dadosCoisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dadosfabio perrella
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbfabio perrella
 
[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Railsfabio perrella
 
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoesDeixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoesfabio perrella
 

Destaque (6)

Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
Coisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dadosCoisas que aprendemos usando Mongoid com grande quantidade de dados
Coisas que aprendemos usando Mongoid com grande quantidade de dados
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodb
 
Efficient rails
Efficient railsEfficient rails
Efficient rails
 
[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails[Campus code] Boas práticas em Rails
[Campus code] Boas práticas em Rails
 
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoesDeixando o codigo_mais_amigavel_para_as_proximas_geracoes
Deixando o codigo_mais_amigavel_para_as_proximas_geracoes
 

Semelhante a Ruby profiling

Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasCelso Crivelaro
 
Alta Disponibilidade na Prática utilizando servidores Linuxes Linux
Alta Disponibilidade na Prática utilizando servidores Linuxes LinuxAlta Disponibilidade na Prática utilizando servidores Linuxes Linux
Alta Disponibilidade na Prática utilizando servidores Linuxes Linuxelliando dias
 
SAPO Broker
SAPO BrokerSAPO Broker
SAPO Brokercodebits
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxDell Technologies
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsJorge Walendowsky
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Resque - Guru-SP 23/01/2011
Resque - Guru-SP 23/01/2011Resque - Guru-SP 23/01/2011
Resque - Guru-SP 23/01/2011Rubem Azenha
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Alta Performance com Java
Alta Performance com JavaAlta Performance com Java
Alta Performance com JavaAlisson Pedrina
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de InternetVanessa Oliveira
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupWagner Roberto dos Santos
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágilabacrazy
 

Semelhante a Ruby profiling (20)

Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 
Alta Disponibilidade na Prática utilizando servidores Linuxes Linux
Alta Disponibilidade na Prática utilizando servidores Linuxes LinuxAlta Disponibilidade na Prática utilizando servidores Linuxes Linux
Alta Disponibilidade na Prática utilizando servidores Linuxes Linux
 
SAPO Broker
SAPO BrokerSAPO Broker
SAPO Broker
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
 
Qcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.jsQcon 2013 - Walmart Frontend Solution using Node.js
Qcon 2013 - Walmart Frontend Solution using Node.js
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Resque - Guru-SP 23/01/2011
Resque - Guru-SP 23/01/2011Resque - Guru-SP 23/01/2011
Resque - Guru-SP 23/01/2011
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Alta Performance com Java
Alta Performance com JavaAlta Performance com Java
Alta Performance com Java
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Tendências do Mercado de Internet
Tendências do Mercado de InternetTendências do Mercado de Internet
Tendências do Mercado de Internet
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágil
 
Automação de Data Center
Automação de Data CenterAutomação de Data Center
Automação de Data Center
 

Ruby profiling