> -----Original Message-----
> From: python-dev-bounces+kristjan=ccpgames....@python.org
> Some years? I computed 584.5 years, so it should not occur in practice.

Funny that you mention it. "should not occur in practice" is exactly my point.

> > Here's actual code from production:
> >
> > BOOL WINAPI QueryPerformanceCounterCCP( LARGE_INTEGER* li ) {
> >        static LARGE_INTEGER last = {0};
> >        BOOL ok = QueryPerformanceCounter(li);
> >        if( !ok )
> >        {
> >                return FALSE;
> >        }
> 
> Did you already see it failing in practice? Python ignores the return value 
> and
> only uses the counter value.
No, actually not.  But we always check return codes.  Always.

> 
> > Even negative delta values of time are usually  harmless on the application
> level.
> > A curiosity, but harmless.
> 
> It depends on your usecase. For a scheduler or to implement a timeout, it
> does matter. 
Does it?
now = time.wallclock()
if job.due_time <= now:
        job.do_it()

So what if you get an early timeout?  timeouts aren't guaranteed to wait _at 
least_ the specified time.  Rather to wait _at most_ the specified time.  

> 
> The PEP contains also different proofs that QPC is not steady, especially on
> virtual machines.
What does "steady" mean? 
Sampled time on a computer will always differ from some ideal time measured by 
an atomic clock.  On a virtual machine, the probability distribution of the 
error function can be different than on a "real" machine, but saying it is 
different is not enough.  You have to quantify it somehow.  And unless there is 
some "accepted" error PDF, there is no way to say that some platforms are ok, 
and others not.

And what does it matter?  A virtual machine is just another platform, one where 
we are providing a counter as good as that platform can provide.  "Caveat 
emptor: Don't expect reliable benchmarks or smoothly running time on a virtual 
machine.  The wallclock() function will contain some undetermined error 
depending on the quality of your platform."

I think you are simply overcomplicating the problem and trying to promise too 
much, without even being able to properly quantify that promise.  Just relax 
the specification and all will be well.

K
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to