From: Kikutani Makoto Date: 1998-10-17T17:53:12+09:00 Subject: [ruby-list:10159] Speed! --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit きくたにです。 なんだか眠れないので暇つぶし。 以前Pike関係を読んでたら、スクリプト言語各種のベンチマーク http://www.r2systems.com/LangPerform/ というのがありました。最初の例題をrubyで書いて比較してみました(添付)。 Javaはなぜかうちでは動かなかったので略。 ---- C ---- % time ./a.out Elements = 100000, average = 14.499995 ./a.out 1.02s user 0.03s system 96% cpu 1.088 total ---- pike ---- % time pike floatBasic_pike Elements = 100000, average = 14.500 pike floatBasic_pike 8.19s user 0.39s system 97% cpu 8.804 total ---- ruby ---- % time ruby floatBasic_ruby Elements = 100000, average = 14.499995 ruby floatBasic_ruby 15.40s user 0.11s system 98% cpu 15.708 total ---- tcl ---- % time tclsh floatBasic_tcl /opt/usr-local-src/Lang/bench Elements = 100000, average = 14.5462 tclsh floatBasic_tcl 85.25s user 0.20s system 96% cpu 1:28.29 total うむむむ、tclには勝ったけど、Pikeに少し離されている。もう少し速くして Python-j-ML に道場破りに行きたいので添削おねがいします。 -- 人生を背負い投げ 菊谷 誠(Kikutani Makoto) kikutani@sprintmail.com kikutani@debian.or.jp (Linux関係のみ) --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=floatBasic_ruby $col_num = 0 $row_ave = [] $col_sum = [] IO.foreach("floatData") {|$_| row = split("\t") if $col_num == 0 $col_num = row.size for i in 0 .. $col_num - 1 $col_sum[i] = 0.0 end end rsum = 0.0 for i in 0 .. $col_num -1 r = row[i].to_f rsum += r $col_sum[i] += r end $row_ave << rsum / $col_num } row_num = $row_ave.size col_ave = [] total = 0.0 $col_sum.each{|c| col_ave << c / row_num total += c } data_num = row_num * $col_num printf "Elements = %d, average = %f\n", data_num, total / data_num --3V7upXqbjpZ4EhLz--