[前][次][番号順一覧][スレッド一覧]

ruby-changes:26157

From: nari <ko1@a...>
Date: Wed, 5 Dec 2012 23:53:27 +0900 (JST)
Subject: [ruby-changes:26157] nari:r38214 (trunk): * gc.c (getrusage_time): uses clock_gettime() with

nari	2012-12-05 23:53:16 +0900 (Wed, 05 Dec 2012)

  New Revision: 38214

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=38214

  Log:
    * gc.c (getrusage_time): uses clock_gettime() with
      CLOCK_PROCESS_CPUTIME_ID when available, which provides a 1ns
      precision on linux. [ruby-core:50495] [Bug #7500]

  Modified files:
    trunk/ChangeLog
    trunk/gc.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 38213)
+++ ChangeLog	(revision 38214)
@@ -1,3 +1,9 @@
+Wed Dec  5 23:50:23 2012  Narihiro Nakamura  <authornari@g...>
+
+	* gc.c (getrusage_time): uses clock_gettime() with
+	  CLOCK_PROCESS_CPUTIME_ID when available, which provides a 1ns
+	  precision on linux. [ruby-core:50495] [Bug #7500]
+
 Wed Dec  5 22:46:02 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* vm.c (rb_vm_make_proc): save the proc made from the given block so
Index: gc.c
===================================================================
--- gc.c	(revision 38213)
+++ gc.c	(revision 38214)
@@ -3853,7 +3853,14 @@
 static double
 getrusage_time(void)
 {
-#ifdef RUSAGE_SELF
+#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID)
+    struct timespec ts;
+
+    if (clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts) == 0) {
+        return ts.tv_sec + ts.tv_nsec * 1e-9;
+    }
+    return 0.0;
+#elif defined RUSAGE_SELF
     struct rusage usage;
     struct timeval time;
     getrusage(RUSAGE_SELF, &usage);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]