Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use strict;
- use warnings;
- use JSON::XS qw(encode_json);
- use Benchmark qw(cmpthese);
- my $obj = [ map {
- +{
- name => 'foo',
- age => 123,
- fg => !!0,
- };
- } 0 .. 100];
- {
- my $src;
- sub my_encode_ver2 {
- my $obj = shift;
- $src = '[';
- {
- for (@{$obj}) {
- $src .= '{"name":"' . $_->{'name'} . '","age":' . ($_->{age} + 0) . ',"fg":' . ($_->{fg}? 'true':'false') . '},';
- }
- $src = substr($src, 0, -1);
- }
- $src .= ']';
- return $src;
- }
- };
- sub my_encode {
- my $obj = shift;
- return '['
- . do {
- my $src;
- for (@{$obj}) {
- $src .= '{"name":"' . $_->{'name'} . '","age":' . ($_->{age} + 0) . ',"fg":' . ($_->{fg}? 'true':'false') . '},';
- }
- substr($src, 0, -1);
- }
- . ']';
- }
- cmpthese -1, {
- "my_encode" => sub { my_encode($obj) },
- "my_encode_ver2" => sub { my_encode_ver2($obj) },
- "JSON::XS" => sub { encode_json($obj) }
- };
- # Rate my_encode my_encode_ver2 JSON::XS
- # my_encode 49123/s -- -5% -29%
- # my_encode_ver2 51661/s 5% -- -25%
- # JSON::XS 69200/s 41% 34% --
Add Comment
Please, Sign In to add comment