[python] modul turtle: rychlost graf.výstupu; chyba v setup?
petrofF
petr0ff na seznam.cz
Úterý Květen 18 21:20:18 CEST 2010
Při jednoduchém testu, jak časově náročné je generování dlouhých
sekvencí pohybových příkazů (typických pro generování fraktálů, což je
oblast použití, která mě zajímá) jsem obdržel výsledky, které mě
(nemile) překvapily:
from turtle import *
import time
def stopky(label,funkce):
Tstart=time.clock(); rtn = funkce()
Tfinish=time.clock()
print label % (Tfinish-Tstart)
return rtn
def LF_repeat(pocet):
for i in xrange(pocet):
left(90)
forward(8)
F = lambda x: lambda: LF_repeat(x)
for level in range(6):
pocet = 256 << level
reset(); speed("fastest"); tracer(0);
stopky("Vykresleno: %4s useku za %%6.2f s" % pocet,F(pocet))
Vykresleno: 256 useku za 0.27 s
Vykresleno: 512 useku za 1.03 s
Vykresleno: 1024 useku za 3.97 s
Vykresleno: 2048 useku za 15.75 s
Vykresleno: 4096 useku za 61.73 s
Vykresleno: 8192 useku za 242.27 s
Jak vidno, při zdvojnásobení počtu příkazů se doba prodlouží
čtyřnásobně
Není mi jasné proč tomu tak je...
Pokud víte o nějaké py knihovně s rychlými primitivy (drawPoint,
drawLine) byl bych rád
Dále:
Připadá mi, že ve funkci setup je chyba:
def setup(**geometry):
""" Sets the size and position of the main window.
Examples:
>>> setup (width=200, height=200, startx=0, starty=0)
sets window to 200x200 pixels, in upper left of screen
>>> setup(width=.75, height=0.5, startx=None, starty=None)
sets window to 75% of screen by 50% of screen and centers
>>> setup(width=None)
forces use of default geometry as in older versions of turtle.py
"""
global _width, _height, _startx, _starty
width = geometry.get('width',_width)
if width >= 0 or width == None:
_width = width
else:
raise ValueError, "width can not be less than 0"
height = geometry.get('height',_height)
if height >= 0 or height == None:
_height = height
else:
raise ValueError, "height can not be less than 0"
startx = geometry.get('startx', _startx)
if startx >= 0 or startx == None:
_startx = _startx <<<=========== ??????
else:
raise ValueError, "startx can not be less than 0"
starty = geometry.get('starty', _starty)
if starty >= 0 or starty == None:
_starty = starty
else:
raise ValueError, "startx can not be less than 0"
....atd
Je to z instalace Python 2.5
Další informace o konferenci Python