きくたにです。

なんだか眠れないので暇つぶし。

以前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関係のみ) 
$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