Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: program performence timing question

Author: JW de Kort

Date: 02:45:47 01/24/02

Go up one level in this thread


On January 23, 2002 at 13:30:44, Robert Hyatt wrote:

>On January 23, 2002 at 08:39:53, JW de Kort wrote:
>
>>Hi!
>>
>>Last week i decided it was time to speed up my evaluation function. In order to
>>do so i inserted some code to keep  track of the time spend in various parts of
>>the evaluation function. Somthing like:
>>
>>int timeused []
>>
>>
>>eval()
>>{
>>  timeused[total]-=clock();
>>
>>   timeuses[part1] -=clock
>>
>>    // do some evaluation
>>
>>    timeused[part]+=clock();
>>
>>   timeuse [part2] -= clock();
>>   // do some other evaluation
>>  tumeuse [part2]-=clock();
>>
>>   timeuse[total]+=clock();
>>}
>>
>>
>>Then i evaluated the time spend in the various parts. This was very
>>disappointing: after 10 runs of the same number evaluations each run jused a
>>different amount of time and the time spend in the various parts of the
>>evaluation also different, not only in time used but also in time used as a
>>percentage of the total time spend evaluating. These difference where not small
>>but rather large. In one word: useless!
>>
>>Can anybody explain this behaviour? And is there a better way to time?
>>
>>Thanks in advance
>>
>>Jan WIllem
>
>
>The problem is the way the accumulated CPU time is updated.  The typical
>operating system updates the accumulated CPU time at several points:
>
>1.  When the process is interrupted and preempted by another process.
>
>2.  When the time quantum for the current process runs out.
>
>If you are running by yourself, the latter is the most common, and that
>means that the accumulated CPU time will not increase smoothly, but will
>rather jump in increments.  A typical scheduling quantum is 200ms, so that
>the cpu time will jump in fairly big steps.  If what you are timing takes
>less than 200ms, you might get 0 or you might get 200, depending on when you
>happen to sample.
>
>A better scheme is to either (a) use the wall clock time in microseconds if
>you can get to it;  (b) use the CPU hardware performance counter register that
>is incremented once each CPU clock cycle.  Either is better than using the
>CPU time, which I assume you are doing to see the variance youi are getting.

Thank you for your reply, but can you be more specific how to implement this. Or
did you do this in Crafty in which case i can look it up in the source code.

Jan Willem





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.