All work and no play makes Jack a dull boy

terça-feira, 6 de agosto de 2013

Autoenconding para python no SublimeText

Pacote SublimeText da vez é o Auto Enconding for Python.

#quemnunca acabou esquecendo de declarar o encoding do arquivo python?

Então, para sua preguiça seu auxílio há um pacote para Sublime Text que dá uma mão nisso.

Ele simplesmente inclue para você:
#!/usr/bin/env python
# -*- coding: utf-8 -*-#
Dá uma conferida.

segunda-feira, 5 de agosto de 2013

loops, list comprehension e generators

loops, list comprehension generators
Qual a diferença de tempo (performance também?) entre alguns modos de montar uma lista em python? Resolvi fazer um teste de tempo de execução de um código simples. A idéia é comparar o tempo que leva para montar uma lista contentdo 1 milhão de números.

Segue a sequência com seus respectivos tempos. Ah! Para medir o tempo usei o 'time' do linux e rodei todos com o comando a seguir no terminal do ubuntu 12.04 64bits.


$ time python teste.py

Apesar de óbvia a diferença entre usar  range()  e  xrange()  no python, fiz questão de deixar para mostrar/constatar em relação a tempo de execução.

lista = []
for i in range(1000000):
    lista.append(i)
# TEMPO GASTO 0.198s

for i in xrange(1000000):
    lista.append(i)

# TEMPO GASTO 0.169s

Dica rápida: instancie o método  append() , isso ajuda um pouco.
lista_append = lista.append
for i in range(1000000):
    lista_append(i)

# TEMPO GASTO 0.158s


lista_append = lista.append
for i in xrange(1000000):
 lista_append(i)

# TEMPO GASTO 0.156

List comprehension e generators
lista = [i for i in range(1000000)]
# TEMPO GASTO 0.141s

lista = [i for i in xrange(1000000)]
# TEMPO GASTO 0.100s

lista = (i for i in range(1000000))
# TEMPO GASTO 0.065s

lista = (i for i in xrange(1000000))
# TEMPO GASTO 0.021s


Bacana a diferença de tempo entre o primeiro e último, não?