Marlin Rowley wrote:
All:

I've got a script that runs really slow because I'm reading from a stream a byte at a time:

// TERRIBLE
for y in range( height ):
        for color in range(4):
            for x in range( width ):
                pixelComponent = fileIO.read(4)
buffer = unpack("!f",pixelComponent) << unpacks ONE float, but we now can do something with that pixel component.


I can speed this up dramatically if I did this:

// MUCH FASTER
for y in range( height ):
    for color in range(4):
pixelComponent = fileIO.read(4*width) <<<<<<<<< GET a LOT more data from the stream into memory FIRST!!
       for x in range( width ):
buffer = unpack( ?????? ) <<<< how do I get each float from the pixelComponent???

Just carve of the first four bytes of pixelComponent on each pass through the loop, and unpack that.

for x in range(width):
 fourbytes = pixelComponent[:4]   # first 4 bytes
 pixelComponent = pixelComponent[4:]  # All but first four bytes
 buffer = unpack("!f", fourbytes)


There are probably better ways overall, but this directly answers your question.

Gary Herron




-M
------------------------------------------------------------------------
With Windows Live for mobile, your contacts travel with you. Connect on the go. <http://www.windowslive.com/mobile/overview.html?ocid=TXT_TAGLM_WL_Refresh_mobile_052008>
------------------------------------------------------------------------

--
http://mail.python.org/mailman/listinfo/python-list

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to