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.

278 Performance

As cinco rotinas do exemplo têm a mesma funcionalidade: geram uma escala

de cores RGB. Porém, o tempo de execução é diferente.

Comparando os resultados:

Rotina Tipo Tempo Laços x/range()

rgb1() Função 54.197 3 range()

rgb2() Função 53.640 3 xrange()

rgb3() Gerador 52.317 3 xrange()

rgb4() Função 53.618 3 range()

rgb5() Gerador 32.209 1 range()

rgb6() Gerador 30.431 1 xrange()

Fatores observados que pesaram no desempenho:

▪ A complexidade do algoritmo.

▪ Geradores apresentaram melhores resultados do que as funções

tradicionais.

▪ O gerador xrange() apresentou uma performance ligeiramente melhor

do que a função range().

O gerador rgb6(), que usa apenas um laço e xrange(), é bem mais eficiente que

as outras rotinas.

Outro exemplo:

# -*- coding: latin1 -*-

import cProfile

def fib1(n):

"""

Fibonacci calculado de forma recursiva.

"""

if n > 1:

return fib1(n - 1) + fib1(n - 2)

else:

return 1

def fib2(n):

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

Saved successfully!

Ooh no, something went wrong!