だるろぐ

だるいぶろぐです

変数生成のコストってどんなもんですか

バッチ処理スクリプト書いてて思った。perlは変数生成のコストが意外に高いって以前聞いたのだけど、どんくらいなのかなと。

use strict;
use warnings;
use Benchmark qw/:all/;

sub gen_once {
    my ($ho,$ge,$fo);
    my $re;

    for (1..1000) {
        $ho = 1;
        $ge = 2;
        $fo = 3;
        $re = $ho + $ge + $fo;
    }

    return $re;
}

sub gen_each {
    my $re;

    for (1..1000) {
        my ($ho,$ge,$fo);
        $ho = 1;
        $ge = 2;
        $fo = 3;
        $re = $ho + $ge + $fo;
    }

    return $re;
}

cmpthese(5000, {
    gen_once => sub { gen_once() },
    gen_each => sub { gen_each() },
});
% perl b.pl
          Rate gen_each gen_once
gen_each 727/s       --     -27%
gen_once 996/s      37%       --

差が有るのは分かった。で、これはでかいのかどーなのか。
そもそも。1時間に1回のバッチとかなら気にする必要ないな。5分に1回の場合は気にすべきだろか。