Author: Dave Gomboc
Date: 23:03:28 02/14/00
Go up one level in this thread
On February 15, 2000 at 01:53:43, Dan Newman wrote: >On February 14, 2000 at 22:53:03, Dave Gomboc wrote: > >>On February 14, 2000 at 22:18:18, Dan Newman wrote: >> >>>On February 14, 2000 at 15:25:24, Dave Gomboc wrote: >>> >>>>On February 14, 2000 at 14:38:14, José de Jesús García Ruvalcaba wrote: >>>> >>>>>On February 14, 2000 at 03:16:33, Dave Gomboc wrote: >>>>> >>>>>[big snip] >>>>>> >>>>>>How much faster do you think a switch is than using virtual dispatch? >>>>>> >>>>>>Dave >>>>> >>>>>What is a virtual dispatch? >>>>>José. >>>> >>>>What you get if you went OO-crazy and had a piece class with descendents for >>>>pawn, knight, bishop, etc., then called a member function. >>>> >>>>Dave >>> >>>I've tried to go OO-crazy once or twice, but the one thing that seemed to >>>get in the way and require some really hairy solution was pawn promotion. >>>The only thing I could think of doing was to maintain a pool of extra >>>promotion pieces and perhaps overload new and delete in the piece class to >>>get the new piece from this pool. But all that extra mechanism seemed like >>>too much... >>> >>>-Dan. >> >>I'm not suggesting that going OO-crazy is a good idea (hence my name: OO-crazy >>:-). I'm just wondering how much longer do you think a virtual dispatch would >>take than a standard switch statement. >> >>(Assuming there are no classes being loaded dynamically at run-time, there >>doesn't seem to be a reason that it should be any slower at all, in this >>particular case. Do C++ compilers usually know that classes at the bottom of >an inheritance hierarchy are amenable to optimizations that would be unsafe on >>classes that are higher up?) >> >>Dave > >Well, if you put the move generator into one function (and it does no function >calls itself except those that are inlined) then you get the cost of one >function call. Okay. > But if you go the virtual function route, then you get a >call for each piece. I suppose the virtual function mechamism will cost a >little extra too--maybe a couple of instructions. You shouldn't get a function call for each piece -- that should all be inlined, no? I'm thinking that virtual dispatch in this situation should actually reduce to a switch that is guaranteed to not have a default case -- thanks to the wonders of static type checking. Maybe I'm missing something. Dave
This page took 0.01 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.