donkiyuのおすすめ商品集みんなもamazonつかっておすすめの本を紹介しないかい? teteの本棚こちらは読みたい本の紹介

2006年08月30日

RubyとPerlで速度比較2

関数(サブルーチン)を引数に渡すパターン

Ruby: test2.rb↓
def blk(arr)
  arr.each {|v|
    yield v;
  }
end

# テスト用の配列の生成
a = [];
10000.times {|x|
  a[x] = x;
}

blk(a){|x| puts x } # 1乗を出力
blk(a){|x| puts x*x } # 2乗を出力
blk(a){|x| puts x*x*x } # 3乗を出力


Perl: test2.pl↓
sub blk{
  my $arr = shift;
  my $func = shift;
  foreach(@$arr){
    &$func($_);
  }
}

# テスト用の配列の生成
$a = [];
for(my $i=0;$i<10000;$i++){
  $a->[$i] = $i;
}

blk($a,sub{print $_[0]."\n"}); # 1乗を出力
blk($a,sub{print $_[0]*$_[0]."\n"}); # 2乗を出力
blk($a,sub{print $_[0]*$_[0]*$_[0]."\n"}); # 3乗を出力


やはりPerlが速い。
$ time ./test2.rb > /dev/null

real 0m0.395s
user 0m0.298s
sys 0m0.017s

$ time ./test2.pl > /dev/null

real 0m0.186s
user 0m0.116s
sys 0m0.014s
posted by donkiyu at 01:19| Comment(0) | TrackBack(0) | プログラマっぽい?? | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/22995244
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック