On 01/17/2013 06:11 AM, Tomas Vondra wrote:
> Dne 17.01.2013 11:16, Magnus Hagander napsal:
>> On Thu, Jan 17, 2013 at 11:09 AM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>> On Thu, Jan 17, 2013 at 9:36 AM, Magnus Hagander
>>> <magnus(at)hagander(dot)net> wrote:
>>>> We have committed platform-specific features before, but generally
>>>> only when it's not *possible* to do them for all platforms. For
>>>> example the posix_fadvise stuff isn't available on Windows at all, so
>>>> there isn't much we can do there.
>>>
>>> Right - having platform specific features for other reasons like lack
>>> of time is a slippery slope in my opinion. We should not get into such
>>> a habit or Windows will quickly become a second class platform as far
>>> as PostgreSQL features are concerned.
>>
>> Especially since there is no lack of time - the functionality is
>> there, it just looks (significantly) different.
>
> Really? Any link to relevant docs or something?
>
> When doing some research in this field, the only option I was able to
> come up
> with was combining gettimeofday() with the timing functionality, and
> do something
> like this:
>
> 1) call gettimeofday() at thread start, giving a common unix timestamp
> 2) measure the time from the thread start using the conters (for
> each transaction)
> 3) combine those values
>
> This might of course give up to a second difference compared to the
> actual time
> (because of the gettimeofday precision), but IMHO that's fine.
The link I posted showed a technique which essentially uses edge
detection on gettimeofday() to get an accurate correspondence between
the time of day and the performance counter, following which you can
supposedly calculate the time of day with a high degree of accuracy just
from the performance counter. You should be able to do this just once,
at program start. If you don't care that much about the initial
precision then your procedure should work fine, I think.
cheers
andrew