Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: choosing target times and probs with clock()

Author: Andrew Williams

Date: 15:48:10 06/22/99

Go up one level in this thread


On June 22, 1999 at 15:18:17, Alex Boby wrote:

>
>A couple problems with timing...
>
>1.   In my limited spare time I've just done the switch over from depth based to
>time based searching. I am now having difficulties coming up with an algorithm
>to choose the amount of time which should be spent searching for each move. This
>is a trivial task if the time controls are x moves in y minutes but if the time
>controls are simply x minutes for the whole game (like on ICS), then what's the
>most efficient way to use the time?

What I do is to simply assume there are about 30 moves left in all cases - when
I get closer to the endgame, I reduce this to 20 moves left. I just divide the
time remaining by this number (after taking away 1/64 for a reserve).


>
>2.   I am developing in C under linux and using the clock() command for all
>timings. The problem I have is that when it says that it took, for example, 10
>seconds to search, it's in actuality more like 25 seconds. At first I thought
>that I had some kind of problem with casting or arithmetic but I checked all
>that. I also examined crafty's code and it seems exactly the same as far as
>usage of clock() is concerned. Then I thought that maybe my clock chip was
>malfunctioning, but if this were the case then my system would not be keeping
>accurate time,... but it is. Therefore I have no idea what the problem could be,
>but it's a pretty significant one as far as I'm concerned. Any ideas?
>
>Much thanks,
>Alex Boby

This is what I use under linux - I think it's the correct way of doing things.
This returns the number of hundredths of seconds that have elapsed since some
fixed point in the past. I found everything I needed by using "man time" at
the command prompt.

#include <sys/time.h>

/* Gets the time of day in hundredths of a second */
long get_hundredths() {
	struct timezone tz = { 0, DST_GB };
	long h = 0;
	struct timeval tv;

	gettimeofday(&tv, &tz);

	h = (tv.tv_sec * 100L) + (tv.tv_usec / 10000L);

	return h;
}

Hope this is helpful.

Andrew



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.