21.12.2022 Views

python_para_desenvolvedores_2ed

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Performance 281

lugar adequado).

Exemplo (com o último trecho de código avaliado no exemplo anterior):

import psyco

# Tente otimizar tudo

psyco.full()

import timeit

# Lista dos quadrados de 1 a 1000

cod = '[x ** 2 for x in xrange(1, 1001)]'

print timeit.Timer(cod).timeit()

Saída:

127.678481102

O código foi executado mais de duas vezes mais rápido do que antes. Para

isso, foi necessário apenas acrescentar duas linhas de código.

Porém, o Psyco deve ser usado com alguns cuidados, pois em alguns casos ele

pode não conseguir otimizar ou até piorar a performance 86 . As funções map()

e filter() devem ser evitadas e módulos escritos em C, como o re (expressões

regulares) devem ser marcados com a função cannotcompile() para que o Psyco

os ignore. O módulo fornece formas de otimizar apenas determinadas partes

do código da aplicação, tal como a função profile(), que só otimiza as partes

mais pesadas do aplicativo, e uma função log() que analisa a aplicação, para

contornar estas situações.

Algumas dicas sobre otimização:

▪ Mantenha o código simples.

▪ Otimize apenas o código aonde a performance da aplicação é realmente

crítica.

86 Existem algumas funções em que o Psyco tem o efeito de reduzir a velocidade do

programa, pois o próprio Psyco consome CPU também. Além disso, o Psyco também faz

com que a aplicação consuma mais memória.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!