Guest User

Untitled

a guest
Oct 16th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. use strict;
  2. use warnings;
  3.  
  4. use JSON::XS qw(encode_json);
  5. use Benchmark qw(cmpthese);
  6.  
  7. my $obj = [ map {
  8. +{
  9. name => 'foo',
  10. age => 123,
  11. fg => !!0,
  12. };
  13. } 0 .. 100];
  14.  
  15. {
  16. my $src;
  17. sub my_encode_ver2 {
  18. my $obj = shift;
  19. $src = '[';
  20. {
  21. for (@{$obj}) {
  22. $src .= '{"name":"' . $_->{'name'} . '","age":' . ($_->{age} + 0) . ',"fg":' . ($_->{fg}? 'true':'false') . '},';
  23. }
  24. $src = substr($src, 0, -1);
  25. }
  26. $src .= ']';
  27. return $src;
  28. }
  29. };
  30.  
  31. sub my_encode {
  32. my $obj = shift;
  33. return '['
  34. . do {
  35. my $src;
  36. for (@{$obj}) {
  37. $src .= '{"name":"' . $_->{'name'} . '","age":' . ($_->{age} + 0) . ',"fg":' . ($_->{fg}? 'true':'false') . '},';
  38. }
  39. substr($src, 0, -1);
  40. }
  41. . ']';
  42. }
  43.  
  44. cmpthese -1, {
  45. "my_encode" => sub { my_encode($obj) },
  46. "my_encode_ver2" => sub { my_encode_ver2($obj) },
  47. "JSON::XS" => sub { encode_json($obj) }
  48. };
  49.  
  50. # Rate my_encode my_encode_ver2 JSON::XS
  51. # my_encode 49123/s -- -5% -29%
  52. # my_encode_ver2 51661/s 5% -- -25%
  53. # JSON::XS 69200/s 41% 34% --
Add Comment
Please, Sign In to add comment