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/