summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-28 01:48:11 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-28 01:48:11 +0000
commit253232c028a5565dbeecc05fab5e81b35ab58bcc (patch)
treec1751860267886da09303cb4554b20e3e1706484 /NEWS
parent109ccfdb2c85c81d16ad7c64bfe233883d841d5a (diff)
process.c: Use getrusage(2) in Process.times
if getrusage(2) is available, to improve precision of Process.times and its user like lib/benchmark.rb. On macOS, since getrusage(2) has better precision than times(3), they are much improved like: * Before Process.times => #<struct Process::Tms utime=0.56, stime=0.35, cutime=0.04, cstime=0.03> puts Benchmark.measure { "a" * 1_000_000_000 } 0.340000 0.310000 0.650000 ( 0.674025) * After Process.times => #<struct Process::Tms utime=0.561899, stime=0.35076, cutime=0.046483, cstime=0.038929> puts Benchmark.measure { "a" * 1_000_000_000 } 0.343223 0.310037 0.653260 ( 0.674025) On Linux, since struct rusage from getrusage(2) is used instead of struct tms from times(2), they are slightly improved like: * Before Process.times => #<struct Process::Tms utime=0.43, stime=0.11, cutime=0.0, cstime=0.0> puts Benchmark.measure { "a" * 1_000_000_000 } 0.120000 0.040000 0.170000 ( 0.171621) * After Process.times => #<struct Process::Tms utime=0.432, stime=0.116, cutime=0.0, cstime=0.0> puts Benchmark.measure { "a" * 1_000_000_000 } 0.124000 0.048000 0.172000 ( 0.171621) [ruby-dev:49471] [Feature #11952] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS4
1 files changed, 4 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 5bfe01b3a0..3f9f620850 100644
--- a/NEWS
+++ b/NEWS
@@ -59,6 +59,10 @@ with all sufficient information, see the ChangeLog file or Redmine
of #coerce. Return nil in #coerce if the coercion is impossible.
[Feature #7688]
+* Process
+
+ * Precision of Process.times is improved if getrusage(2) exists. [Feature #11952]
+
* Range
* Range#initialize no longer rescue exceptions when comparing begin and
end with #<=> and raise a "bad value for range" ArgumentError