mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: OBATA Noboru <noboru@ylug.org>
To: greearb@candelatech.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: a faster way to gettimeofday?
Date: Mon, 11 Mar 2002 17:47:02 -0500 (EST)	[thread overview]
Message-ID: <20020311.174702.74741981.obatan@rpi.edu> (raw)
In-Reply-To: <3C859007.50102@candelatech.com>
In-Reply-To: <3C859007.50102@candelatech.com>

> I have a program that I very often need to calculate the current
> time, with milisecond accuracy.  I've been using gettimeofday(),
> but gprof shows it's taking a significant (10% or so) amount of
> time.  Is there a faster (and perhaps less portable?) way to get
> the time information on x86?  My program runs as root, so should
> have any permissions it needs to use some backdoor hack if that
> helps!

Just from curious, I have implemented the userland gettimeofday
as a shared library.  It runs about ten times faster than the
system call on my PC, Pentium4 1.5GHz, Linux-2.4.18-pre9-ac3.

The benchmark program says:

  system call: 1.226556 usec/call
  userland   : 0.133730 usec/call, (usec = micro second = 0.000001 sec)

It is available from:

  http://www.cs.rpi.edu/~obatan/ugettime/ugettime-0.1.1.tar.gz

You have to run calibration program "calib" first.  Then compile
a shared library ugettime.so, in which these calibrated
parameters are embedded as constants.  (So you need to recompile
it whenever you reboot the system. :-)  Please read README to
see how to use it.

Preloading this library enables the userland gettimeofday.  For
example,

  $ LD_PRELOAD=./ugettime.so emacs

will execute emacs and all gettimeofday system calls that emacs
issues will be handled by ./ugettime.so.

Patient calibration gives you very accurate userland
gettimeofday if your original gettimeofday and TSC on your
system has good enough precision.

I'm running verification program for 18 hours, but the userland
gettimeofday still synchronizes with the actual system call.

  :
  :
  sys: 1015885532.519445              <- system call
  usr: 1015885532.519444 (-0.000001)  <- userland (difference in seconds)
  sys: 1015885533.029344
  usr: 1015885533.029344 (+0.000000)
  sys: 1015885533.539446
  usr: 1015885533.539445 (-0.000001)
  :
  :

Yes, it is just for fun...  Enjoy!

-- 
OBATA Noboru (noboru@ylug.org)

  parent reply	other threads:[~2002-03-11 22:47 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-06  3:41 Ben Greear
2002-03-06  3:58 ` Davide Libenzi
2002-03-06  4:20   ` Ben Greear
2002-03-06  4:31     ` Davide Libenzi
2002-03-06  4:34       ` Davide Libenzi
2002-03-07 14:14       ` a faster way to gettimeofday? rdtsc strangeness Terje Eggestad
2002-03-07 14:41         ` Alan Cox
2002-03-07 15:43           ` Terje Eggestad
2002-03-07 16:17             ` Alan Cox
2002-03-07 18:32             ` H. Peter Anvin
2002-03-08  1:32               ` Jamie Lokier
2002-03-08  1:35                 ` H. Peter Anvin
2002-03-08  1:57                   ` Jamie Lokier
2002-03-08 18:30                     ` gettimeofday() system call timing curiosity Jamie Lokier
2002-03-08 18:50                       ` H. Peter Anvin
2002-03-08 20:16                         ` Jamie Lokier
2002-03-08 20:30                           ` Davide Libenzi
2002-03-08 18:54                       ` Richard B. Johnson
2002-03-08 19:06                         ` johan.adolfsson
2002-03-08 19:16                           ` H. Peter Anvin
2002-03-08 19:45                           ` Richard B. Johnson
2002-03-08 20:29                             ` johan.adolfsson
2002-03-08 20:43                             ` Alan Cox
2002-03-09  3:03                               ` pjd
2002-03-09 18:51                                 ` Alan Cox
2002-03-09  3:15                             ` Kelsey Hudson
2002-03-08 19:19                         ` Alan Cox
2002-03-08 20:40                         ` george anzinger
2002-03-06 20:45     ` a faster way to gettimeofday? dean gaudet
2002-03-06 21:31       ` Chris Ball
2002-03-06 22:25         ` george anzinger
2002-03-07  0:04         ` vsyscalls Mark Mielke
2002-03-06 16:16 ` a faster way to gettimeofday? Chris Friesen
2002-03-06 16:54   ` Richard B. Johnson
2002-03-11 22:47 ` OBATA Noboru [this message]
2002-03-12 13:06   ` Jamie Lokier
2002-03-12 15:12     ` OBATA Noboru

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020311.174702.74741981.obatan@rpi.edu \
    --to=noboru@ylug.org \
    --cc=greearb@candelatech.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®