Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Dynamic memory allocation question

Author: Daniel Clausen

Date: 01:08:17 12/03/02

Go up one level in this thread


On December 02, 2002 at 18:14:25, Robert Hyatt wrote:

[snip]

>A dynamic array is bad from the get-go, for performance.  OK for designing
>things of course.  But for chess, inside the engine, no...

It depends very much on the implementation.

The class could internally for example take chunks of a preallocated array and
use that for storing the moves. (the size of the chunk being
MAX_NUMBER_OF_MOVES_IN_A_POSITION) This way you have a clean interface and all
the hacks like the aforementioned MAX number and/or array-bounds checking is
inside the class, where you can easily change it later in the development
process.

Another possibility is to create N movelist objects before the actual search
begins and 'retrieve' the movelists when needed. (can either be an ugly array
again w/o bounds checking, or can be inside a factory class, or a pool class
(the pool could grow in size if needed, or could throw an exception or
whatever)) That's the solution I currently use in my engine. (IIRC - it's been a
while since I worked on it.... *sigh*)

I'm sure other things are possible.. There are many things between 'being an
OO-purist' and 'fiddling around with global arrays w/o bounds checking and
hoping for the best'. :) And the speed difference doesn't have to be 10 when
carefully designing the stuff.

I agree though that many new/allocs during the search simply kill you. :)

Sargon



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.