quarta-feira, 16 de maio de 2012

Usando decorators para timing

E ai pessoal, tudo bem?

O último post foi bem extenso porque eu precisava dar um overview sobre o assunto, mas este será mais objetivo. Depois de escrever sobre profiling tive oportunidade de aplicar o que venho estudando em um projeto e ver, na prática, o quanto este conhecimento é importante. Também recebi boas criticas sobre a publicação anterior, sinal que o assunto é do interesse de mais gente! Por tanto, vamos a uma dica que tem me ajudado bastante.

Das ferramentas citadas no post anterior tenho usado muito o Django Debug Toolbar e o modulo timeit do Python, mas nenhum dos dois supriu minha necessidade de saber, de forma simples e rápida, quanto tempo um determinado método ou uma view do Django demora para ser executada. No inicio eu fiz a subtração do tempo, como o módulo time, no próprio método mas logo percebi que precisava de um decorator. Depois de pesquisar um pouco, cheguei a minha versão do mesmo que compartilho com vocês:

sexta-feira, 4 de maio de 2012

Performance de web apps Python com Django

E ai pessoal! Tem-se falado muito sobre a performance de aplicações Python e também sobre web apps Python feitas em Django, reflexo da crescente adoção destas tecnologias em projetos cada vez maiores. Meu caso não é diferente, trabalho com Python e Django e, devido as necessidades dos projetos, tenho estudado sobre esse assunto que acho muito interessante. O problema é que cada texto que encontrei tratava de apenas uma abordagem deste tema, seja o deployment, as tecnologias usadas, a arquitetura ou o profiling do código em si. Por isso resolvi escrever este post, uma tentativa de compilar todos estes pontos e criar um material que ajude, de forma geral, a conseguir um melhor desempenho de nossas aplicações.

Vou adotar como estratégia uma abordagem "de fora para dentro", na intenção de começar com fatores externos ao código que podem interferir na performance da aplicação, seguindo com os temas relacionados ao código e como podemos "medir" os mesmos.