Sereal-Encoder
view release on metacpan or search on metacpan
author_tools/freeze_thaw_timing.pl view on Meta::CPAN
use Benchmark::Dumb qw(cmpthese);
my $enc_nocb= Sereal::Encoder->new();
my $enc_cb= Sereal::Encoder->new( { freeze_callbacks => 1 } );
my $dec= Sereal::Decoder->new();
package Foo;
sub new {
my $class= shift;
return bless( {@_} => $class );
}
sub FREEZE {
my ( $self, $serializer )= @_;
return $self->{name}; # performance
}
sub THAW {
my ( $class, $serializer, $data )= @_;
return Foo->new( name => $data );
t/130_freezethaw.t view on Meta::CPAN
exit 0;
}
my $thaw_called= 0;
my $freeze_called= 0;
package Foo;
sub new {
my $class= shift;
return bless( { bar => 1, @_ } => $class );
}
sub FREEZE {
my ( $self, $serializer )= @_;
$freeze_called= $serializer eq 'Sereal' ? 1 : 0;
return "frozen object", 12, [2];
}
sub THAW {
my ( $class, $serializer, @data )= @_;
t/130_freezethaw.t view on Meta::CPAN
"Array of frozen values roundtrips"
);
return Foo->new();
}
package Bar;
sub new {
my $class= shift;
return bless( { bar => 1, @_ } => $class );
}
sub FREEZE {
my ( $self, $serializer )= @_;
return "frozen Bar";
}
package main;
my $enc= Sereal::Encoder->new( { freeze_callbacks => 1 } );
t/900_reentrancy.t view on Meta::CPAN
# Encoder reentrancy test courtesy of Zefram
my $enc= Sereal::Encoder->new( { freeze_callbacks => 1 } );
package Foo;
sub FREEZE { $enc->encode( $_[0]->{a} ) }
sub THAW {
my $class= shift;
return bless( { a => Sereal::Decoder->new->decode( $_[1] ) } => $class );
}
package main;
my $data= bless( { a => 42 }, "Foo" );
my $a= $enc->encode($data);
my $output;
my $err;
eval {
$output= Sereal::Decoder->new->decode($a);
( run in 0.227 second using v1.01-cache-2.11-cpan-65fba6d93b7 )