Santiago Romero wrote: >... [I wrote] >> def __init__( self, bw, bh, tiles ): >> self.width, self.height = bw, bh >> self.tilemap = array.array('b', [0]) * bw * bh >> Gives a pure linearization (you do the math for lines). > Do you mean : tilemap[(width*y)+x] ? Yup, exactly.
... > What do you think about: > - Memory Performance: Of course, my maps will take ( 16 bytes / 2-4 > bytes ) = 8 or 4 times less memory (32 / 64 bit processores) ... > right? How many distinct values do you have? If you have under a hundred (and they are all positive), the actual integers are shared, so a byte array only saves you at 4:1 (or 8:1 on a 64-bit processor). > - Speed Performance: Do you think that changing from list to Array() > would improve speed? I'm going to do lots of tilemap[y][x] checks (I > mean, player jumping around the screen, checking if it's falling over > a non-zero tile, and so). The Pythonic answer to this is, "try it both ways." Don't intuit; measure. Now if you are as old-school as I am, you start by thinking, "<invective expurgated>, I don't want to spend a week writing and running benchmarks." Joy, Python excels here. at the command prompt (in 2.5, at least), [a single line, I've broken it to three for newsgroup reading only] C:\> \python25\python -m -s "import array; a = [array.array('b', [0]*1000) for n in range(100)]" "v = a[1][2] + a[2][1] + a[3][3]" You can also use: C:\> \python25\python -m -s "import m; m.setup()" "m.my_fun(123)" Try it, you'll be addicted in no time. Check the documentation on package "timeit." --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list