Sat, Oct 17, 1998 at 09:16:13PM +0900 において
EGUCHI Osamu さん曰く:

> gprof をとりました。

ありがとうございます。

>  43.6      15.04    15.04                             mcount (305)
>   9.3      18.24     3.20   110021     0.03     0.05  _rb_eval <cycle 1> [13]
>   5.3      20.08     1.84   472203     0.00     0.00  _gc_mark <cycle 2> [18]
>   3.9      21.43     1.35   890199     0.00     0.01  _rb_call0 <cycle 1> [11]
>   3.5      22.63     1.20   310011     0.00     0.01  _rb_scan_args [25]
>   3.0      23.68     1.04   100003     0.01     0.01  _strtod [36]
>   2.4      24.52     0.84      241     3.51     5.66  _gc_sweep [30]
>   2.4      25.36     0.84   110020     0.01     0.02  _rb_yield_0 <cycle 1> [19]
>   2.1      26.09     0.73   890199     0.00     0.00  _rb_call <cycle 1> [42]
>   1.6      26.65     0.55  3982128     0.00     0.00  _rb_special_const_p [49]
>   1.4      27.12     0.47   890209     0.00     0.00  _rb_class_of [53]
> 
> これを見る限り、、、
> GC止めるってありですか?

す、すみません、GC止めるってどうやるんですか?

あと、perl版も書きました。簡単に変換できたところを見ると
rubyらしい書き方をしてなかったのね...

% time perl floatBasic_perl
Elements = 100000, average = 14.499995
perl floatBasic_perl  6.67s user 0.06s system 49% cpu 13.651 total

# Pythonは途中まで書いてめげた。

-- 
人生を背負い投げ

菊谷 誠(Kikutani Makoto)  kikutani / sprintmail.com
                          kikutani / debian.or.jp (Linux関係のみ) 
$col_num = 0;
$row_num = 0;
open(IN, "floatData");
while (<IN>) {
  chop;
  @row = split(/\t/);
  if ($col_num == 0) {
    $col_num = $#row + 1;
    for ($i = 0; $i < $col_num; $i++) {
      $col_sum[$i] = 0.0;
    }
  }
  $rsum = 0.0;
  for ($i = 0; $i < $col_num; $i++) {
    $r = $row[$i];
    $rsum += $r;
    $col_sum[$i] += $r; 
  }
  $row_ave[$row_num] = $rsum / $col_num;
  $row_num++;
}
$total = 0.0;
for ($i = 0; $i < $col_num; $i++) {
  $c = $col_sum[$i];
  $col_ave[$i] = $c / $row_num;
  $total += $c;
}
$data_num = $row_num * $col_num;
printf("Elements = %d, average = %f\n", $data_num, $total / $data_num);