Beta Shell
v2.0 ยท web2.us.cloudlogin.co
[FM]
[CMD]
[PHP]
[DB]
[INFO]
[SEC]
File Manager
~
/
usr
/
share
/
doc
/
perl-Class-Accessor
/
examples
Upload
3 items
Name
Size
Perms
Modified
Actions
[ .. / .. ]
benchmark
1.31 KB
-rw-r--r--
2016-12-31 16:12:10
Edit
Del
Editing: benchmark
(1.31 KB)
Path: /usr/share/doc/perl-Class-Accessor/examples/benchmark
Back
#!/usr/bin/perl -w BEGIN { $ENV{MOO_XS_DISABLE} = "no cheating"; $ENV{MOUSE_PUREPERL} = "no cheating"; } package Bench::Base; sub new { my($class) = shift; bless { test => 23 }, $class; } package Bench::Direct; use base qw(Bench::Base); package Bench::Normal; use Class::Accessor "moose-like"; has test => (is => "rw"); package Bench::Fast; use Class::Accessor::Fast "moose-like"; has test => (is => "rw"); package Bench::Faster; use Class::Accessor::Faster "antlers"; has test => (is => "rw"); package Bench::Moose; use Moose; has test => (is => "rw"); package Bench::Mouse; use Mouse; has test => (is => "rw"); package Bench::Moo; use Moo; has test => (is => "rw"); package main; use strict; use Benchmark 'cmpthese'; use Test::More tests => 12; my $tmp; my $direct = Bench::Direct->new({ test => 23 }); my %accessor = ( Direct => sub { $tmp = $direct->{test}; } ); my %mutator = ( Direct => sub { $direct->{test} = 42; } ); for my $p (qw/Normal Fast Faster Moose Mouse Moo/) { my $o = "Bench::$p"->new({ test => 23 }); is $o->test, 23, "$p init"; $o->test(24); is $o->test, 24, "$p set"; $accessor{$p} = sub { $tmp = $o->test; }; $mutator{$p} = sub { $o->test(42); }; } print "accessors:\n"; cmpthese( -1, \%accessor ); print "\n"; print "mutators:\n"; cmpthese( -1, \%mutator );