Author: Ricardo Gibert
Date: 17:39:53 07/06/01
Go up one level in this thread
On July 06, 2001 at 19:55:55, Ricardo Gibert wrote: >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; c0x88 = c8x8 + (c8x8 & 070); Oops! Parenthesis are needed! > > >> >>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.