On recent (>2009) Linux, you can call clock_gettime() with CLOCK_REALTIME_COARSE which is about 6x faster:

https://gist.github.com/3634708

On my workstation calling clock_gettime(CLOCK_REALTIME, ...) and poking the value into a Haskell struct takes about 70ns, with CLOCK_REALTIME_COARSE it's about 19ns (with a much lower stddev). Worth using for this application if it's available. Of course, in Snap we do the "update the clock every second in a thread" trick also.

G

On Wed, Sep 5, 2012 at 4:10 AM, Kazu Yamamoto <kazu@iij.ad.jp> wrote:
Bryan,

>> To my experience, the assumption 2) is not right. getttimeofday()
>> is implemented in user land in Linux 3 but it is a system call
>> in Linux 2.
>
> Just a nit: your history here is not correct. gettimeofday has been
> implemented as a vsyscall for a long time, maybe 5 years. And while it's
> faster than int 0x80, it's not that much faster: 2x or so on modern hardware.

Thank you for your correction.

To whose who are interested in, additional information can be found
from:

        http://en.chys.info/2009/01/linux%E2%80%99s-vsyscall/

Anyway, I believe we should avoid gettimeofday as much as possible
to implement fast servers.

--Kazu

_______________________________________________
web-devel mailing list
web-devel@haskell.org
http://www.haskell.org/mailman/listinfo/web-devel



--
Gregory Collins <greg@gregorycollins.net>