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>