From: Kikutani Makoto Date: 1998-10-18T00:27:47+09:00 Subject: [ruby-list:10161] Re: Speed! --MW5yreqqjyrRcusr Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit 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 [13] > 5.3 20.08 1.84 472203 0.00 0.00 _gc_mark [18] > 3.9 21.43 1.35 890199 0.00 0.01 _rb_call0 [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 [19] > 2.1 26.09 0.73 890199 0.00 0.00 _rb_call [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関係のみ) --MW5yreqqjyrRcusr Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=floatBasic_perl $col_num = 0; $row_num = 0; open(IN, "floatData"); while () { 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); --MW5yreqqjyrRcusr--