桑田です。 FedoraCore11 のカーネルをupdateしたら直りました。なんてこったい。 お騒がせして申し訳ありませんでした。 #それにしても Ruby1.9 でのフィボナッチは速いですねー。 -- regards, makoto kuwata 2009/9/22 Makoto Kuwata <kwa / kuwata-lab.com>: > 桑田といいます。 > Process.times() で返されるユーザ時間の値が正しくない現象が > 発生して困っています。 > どなたかアドバイスをいただけたらと思います。 > > ●症状 > > Process.times() で返される user time が、real time の約 1/3 に > なっている。 > > ●再現コード > > fib.rb: > ---------------------------------------- > def fib(n) > return n <= 2 ? 1 : fib(n-1)+fib(n-2) > end > > t1 = Process.times > start_t = Time.now > > n = 35 > print "fib(#{n})=" > puts fib(n) > > t2 = Process.times > end_t = Time.now > > user_t = t2.utime - t1.utime > sys_t = t2.stime - t1.stime > real_t = end_t - start_t > puts "*** user %4.4s, sys %4.4s, real %4.4s" % [user_t, sys_t, real_t] > ---------------------------------------- > > 実行結果: > ---------------------------------------- > $ ruby -v > ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux] > $ time ruby fib.rb > fib(35)=9227465 > *** user 3.31, sys 0.0, real 10.0 > > real 0m10.089s > user 0m3.312s > sys 0m0.000s > ---------------------------------------- > > real time は約10秒ですが、user time はその 1/3 になっています。 > もちろん、他にCPUを消費しているようなプロセスはありません。 > Ruby 1.9 でも症状は変わりません。 > > ---------------------------------------- > $ time /usr/local/ruby/1.9.1-p243/bin/ruby fib.rb > fib(35)=9227465 > *** user 0.54, sys 0.0, real 1.66 > > real 0m1.850s > user 0m0.547s > sys 0m0.001s > ---------------------------------------- > > > ●環境 > > FedoraCore 11, x86_64, Macbook(Intel CoreDuo2 2GHz) > > ●補足 > > 実は Perl 5 でも同じ現象が発生しているので、Ruby固有の > 問題ではなく、x86_64 linux の問題かもしれません。 > (でも Python では発生していません。) > > > どなたか、ヒントになる情報がありましたらよろしくお願いします。 > > -- > regards, > makoto kuwata >