興味があって試してみました。
やったことは、「[ruby-list:10162] Re: Speed! えぐち@エス
アンドイー」さんの
GC.disable
と、
IO.foreach("floatData") {|$_|
}
を
f = File.open('floatData')
while f.gets
end
f.close
にすること。と、
for i in 0 .. $col_num -1
を
0.upto($col_num - 1) do |i|
にすることです。
PII 266MHz での環境では、
オリジナル
$ ruby speed1.rb
Elements = 100000, average = 14.499995
ruby speed1.rb 4.38s user 0.03s system 100% cpu 4.391 total
IO.foreach を while に
$ ruby speed2.rb
Elements = 100000, average = 14.499995
ruby speed2.rb 3.90s user 0.01s system 100% cpu 3.905 total
for i in を 0.upto() に(だけ)
$ ruby speed2.rb
Elements = 100000, average = 14.499995
ruby speed2.rb 3.98s user 0.04s system 100% cpu 4.007 total
GC.disable を加える(だけ)
$ ruby speed2.rb
Elements = 100000, average = 14.499995
ruby speed2.rb 3.19s user 0.19s system 100% cpu 3.378 total
で、上記すべてを実施するとこのくらいです。
$ ruby speed2.rb
Elements = 100000, average = 14.499995
ruby speed2.rb 2.58s user 0.19s system 99% cpu 2.794 total
自宅の P5 166MHz で試すと、もっとわかりやすく差がでたん
ですが、数字は持ってこなかったので...
--
WATANABE Tetsuya HP Japan
e-mail Tetsuya_WATANABE / hp.com
tetsu / jpn.hp.com