Variable::Magic と Tie::Scalar

なんとなくやってみた

package TestTie;

use strict;
use warnings;
require Tie::Scalar;
use vars qw/@ISA/;
@ISA = qw/Tie::StdScalar/;

sub FETCH { 123 }

package main;

use strict;
use warnings;
use Variable::Magic qw/wizard cast/;
use Benchmark;

tie my $tied, 'TestTie', 123;
warn $tied;

my $wiz = wizard get => sub  { ${$_[0]} = 123 };
my $magic;
cast $magic, $wiz;
warn $magic;

Benchmark::cmpthese(3000000, {
    'tie' => sub { my $foo = $tied * 123 },
    'magic' => sub { my $foo = $magic * 123 },
});

結果

% perl tie.pl
123 at tie.pl line 21.
123 at tie.pl line 26.
          Rate   tie magic
tie   426136/s    --  -20%
magic 531915/s   25%    --
created by blog.nomadscafe.jp

コメント

コメントはありません

コメントを投稿

コメントを投稿するにはログインが必要です