Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: clock() in background

Author: Robert Hyatt

Date: 20:36:28 01/25/00

Go up one level in this thread


On January 25, 2000 at 18:56:37, Peter Fendrich wrote:

>I tried to use the clock() function (in NT4) and it didn't behave as I expected
>it to.
>It is said to "Return elapsed CPU time for current process".
>I hoped to be able to run performance tests with my chess program in the
>background while doing other things in the foreground and yet get the same
>results.
>The clock() is definitely affected by other processes so I get very varied
>results depending on what I'm doing in the foreground.
>
>How come?
>
>//Peter


There are a dozen answers.

1.  you are context-switching from foreground to background processes.  Each
context switch blows out cache.  And eats cycles doing so.

2.  Pages are cached in memory when a program executes.  It is possible that
your foreground process is using enough memory to affect the background process,
from something like causing it to be paged out, to something like using part of
the free memory pages for buffers/page caches, which means the background
process can't use as many for its purposes.

It is hard enough to get the same timing result over and over running a
_single_ program, because of a well-known memory to cache aliasing problem
causing unpredictable cache hits on different runs of the same program.  If
you add even more variability by running something at the same time, about the
best use of the CPU time is to seed a random number generator. :)




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.