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 1.292 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )