[pyar] impacto de la performance usando dict() contra {} en CPython 2.7
Facundo Batista
facundobatista en gmail.com
Vie Nov 16 11:04:27 ART 2012
2012/11/14 Jan Gallardo <koke en lavabit.com>:
> Interezante
> time python -c "{'uno':1}"
>
> real 0m0.030s
> user 0m0.010s
> sys 0m0.017s
>
> time python -c "dict(uno=1)"
>
> real 0m0.035s
> user 0m0.033s
> sys 0m0.000s
Esta no es manera de medir cuanto tarda un pequeño snippet de código,
ya que tenés mil variables que se te meten en el medio (por ejemplo,
cuan cacheado está el binario de Python, que lo estás levantando desde
cero y mezclando los números).
La forma correcta de hacerlo es:
facundo en exopus:~$ python2.7 -m timeit "dict(uno=1)"
1000000 loops, best of 3: 0.385 usec per loop
facundo en exopus:~$ python2.7 -m timeit "{'uno': 1}"
10000000 loops, best of 3: 0.125 usec per loop
Aunque una forma es más de tres veces más lenta que la otra
(principalmente por la ejecución de una función), la diferencia entre
ellas es de un cuarto de microsegundo... realmente tenés que tener ese
código en una zona muy crítica para que importe.
Como nota de color, es notable como *ambas* formas son más rápidas en Python 3:
facundo en exopus:~$ python3.2 -m timeit "dict(uno=1)"
1000000 loops, best of 3: 0.325 usec per loop
facundo en exopus:~$ python3.2 -m timeit "{'uno': 1}"
10000000 loops, best of 3: 0.113 usec per loop
Slds.
--
. Facundo
Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista
More information about the pyar
mailing list