[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
**Subject**: **Re: [ANN] LuaProfiler 2.0**
**From**: Chris Marrin <chris@...>
**Date**: Wed, 15 Jun 2005 07:15:04 -0700

Rici Lake wrote:

On 14-Jun-05, at 7:19 PM, Chris Marrin wrote:

`I have gotten recent experience with QueryPerformanceCounter(). I
``naively tried to get its value and divide it by the value in
``QueryPerformanceFrequency(), first converting both to doubles. I found
``that this conversion reduced the precision down to about 100ms. This
``is because on my shiny new 3GHz P4 machine, the frequency is 3GHz!
``That means the counter increments by 3 billion every second. Since
``it's a 64 bit counter it will still not rollover for about 200 years.
``But if your machine has been running for a month or so like mine was,
``the number gets too big to be represented very precisely by a double!
`

`I find this a bit puzzling. A double has 53 bits of precision. A day has
``86400 seconds; log2 of 86400*3e9 is 47.88; in other words, a double can
``accurately represent a number of 3GHz ticks up to a bit over 34 days.
``After that, it should lose one bit of precision, which should be barely
``noticeable. In a year, you would lose less than four bits of precision.
``If you are reduced to a precision of 100ms, you are losing something
``like 28 bits of precision. This suggests that you were doing arithmetic
``with floats rather than doubles; floats have 24 bits of precision, or 29
``less than doubles, which would work out to about the loss you are
``reporting.
`

`Yeah, I did the same calculation. I figured the counter must be
``incrementing by more than 1 per tick, but I hadn't yet investigated
``that. Then I saw Glenn Maynard's post and realized that you are right.
``D3D is resetting precision to single precision! Thanks...
`
--
chris marrin ,""$,
cmarrin@arch.sel.sony.com b` $ ,,.
(408) 955-3049 mP b' , 1$'
Sony ,.` ,b` ,` :$$'
,|` mP ,` ,mm
,b" b" ,` ,mm m$$ ,m ,`P$$
m$` ,b` .` ,mm ,'|$P ,|"1$` ,b$P ,` :$1
b$` ,$: :,`` |$$ ,` $$` ,|` ,$$,,`"$$ .` :$|
b$| _m$`,:` :$1 ,` ,$Pm|` ` :$$,..;"' |$:
P$b, _;b$$b$1" |$$ ,` ,$$" ``' $$
```"```'" `"` `""` ""` ,P`
"As a general rule,don't solve puzzles that open portals to Hell"'