[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
|
* Process.times
|
||||||
* # => #<struct Process::Tms utime=55.122118, stime=35.533068, cutime=0.0, cstime=0.002846>
|
* # => #<struct Process::Tms utime=55.122118, stime=35.533068, cutime=0.0, cstime=0.002846>
|
||||||
*
|
*
|
||||||
|
* The precision is platform-defined.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
|
@ -16,31 +16,4 @@ describe "Process.times" do
|
|||||||
Process.times.utime.should > user
|
Process.times.utime.should > user
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user