変数生成のコストってどんなもんですか
バッチ処理スクリプト書いてて思った。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回の場合は気にすべきだろか。