[pyar] impacto de la performance usando dict() contra {} en CPython 2.7

Ezequiel Garcia elezegarcia en gmail.com
Vie Nov 16 12:07:11 ART 2012


2012/11/16 Ezequiel Garcia <elezegarcia en gmail.com>:
> 2012/11/16 Facundo Batista <facundobatista en gmail.com>:
>> 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).
>>
>
> Si... yo pensé lo mismo.
>
> Por ejemplo, si los tests fueron hechos uno detrás de otro es seguro
> que la segunda vez
> el tiempo "sys" (dentro del kernel) sea cero.
> Eso se debe (en parte) a que todas las librerías están en el dentry
> cache del kernel.
>
> Otra cosa para mencionar es que, si uno quiere hacer tests con
> cualquier lenguaje interpretado,
> e.g. python, debe medir el tiempo *dentro del intérprete*, porque el
> tiempo de inicio de una maquina
> virtual podría ser significativo.
>
> usar "$ time foo" sirve para medir wall-time, el tiempo de pared, de
> forma chabacana y para una prueba rápida.
>
> En fin.. dije lo mismo que dijo Facundo :P
>

Otra cosa más. Cuando uno piensa en optimizar la performance, debe recordar
obligadamente lo que Dijkstra dijo al respecto: "premature
optimization is the root of all evil".

    Ezequiel



More information about the pyar mailing list