Author: Ricardo Gibert
Date: 16:55:55 07/06/01
Go up one level in this thread
On July 06, 2001 at 18:06:53, Scott Gasch wrote: >On July 06, 2001 at 14:37:14, Artem Pyatakov wrote: > >>I would like to save some memory in things like the history table, but I am >>using the 0x88 board representation, and I would like to sometimes convert these >>coordinates to a normal 8x8 board (so I could have a 64x64 array instead of >>128x128 array)... What is the fastest way to do this conversion? >> >>Thanks > >Hi, > >First, you can get by with 120x120 instead of 128x128... nothing will be in the >last 8 elements. > >Second, I think this will be (very slightly) slower than just sucking it up and >using the larger history table. > >With the larger table you waste about 40Kb of space (16Kb = 64x64x4 vs. 56Kb = >120x120x4). But, assuming that the chance of a history table entry being in the >processor cache is low, you are paying for one memory access with the larger >table vs. a translation + one memory access with the smaller table. Since >memory is cheap and I'm not programming chess-for-the-wrist-watch I don't care. >That said, I could be wrong (as usual). > >As far as how to translate should you choose to... in essence you just want to >grab the six bits of real info out of a coordinate in 0x88 format. If its legal >then bit 3 and bit 7 are clear. So how about this: > >c8x8 = (c0x88 & 0x7) | ((c0x88 & 0x70) >> 1); c8x8 = (c0x88 + (c0x88 & 7)) >> 1; c0x88 = c8x8 + c8x8 & 070; > >Something like that at least. Maybe you can play with reordering the operations >to save cycles. > >Let us know if you see any speedup with smaller tables. I'm curious as to your >results. > >Scott
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.