[DOC] State the precision of Process.times
as platform-defined
Remove the bad example that can lead to misunderstanding as if this precision is defined in Ruby.
This commit is contained in:
parent
8be9138de2
commit
457971f4e2
@ -7836,6 +7836,7 @@ get_clk_tck(void)
|
||||
* Process.times
|
||||
* # => #<struct Process::Tms utime=55.122118, stime=35.533068, cutime=0.0, cstime=0.002846>
|
||||
*
|
||||
* The precision is platform-defined.
|
||||
*/
|
||||
|
||||
VALUE
|
||||
|
@ -16,31 +16,4 @@ describe "Process.times" do
|
||||
Process.times.utime.should > user
|
||||
end
|
||||
end
|
||||
|
||||
# TODO: The precision of `getrusage` depends on platforms (OpenBSD
|
||||
# seems not supporting under-milliseconds in fact); this example is
|
||||
# very questionable as an example of Ruby, and it just repeats the
|
||||
# guard condition.
|
||||
guard -> do
|
||||
1000.times.any? do
|
||||
# If getrusage has precision beyond milliseconds, there will be
|
||||
# very likely at least one non-zero microsecond results when
|
||||
# repeating enough.
|
||||
time = Process.clock_gettime(:GETRUSAGE_BASED_CLOCK_PROCESS_CPUTIME_ID, :nanosecond)
|
||||
not (time % 1_000_000) == 0
|
||||
end
|
||||
rescue Errno::EINVAL
|
||||
false
|
||||
end do
|
||||
it "uses getrusage when available to improve precision beyond milliseconds" do
|
||||
max = 10_000
|
||||
|
||||
found = (max * 100).times.find do
|
||||
time = Process.times.utime
|
||||
!('%.6f' % time).end_with?('000')
|
||||
end
|
||||
|
||||
found.should_not == nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user