ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/JSON-XS/XS.pm
(Generate patch)

Comparing JSON-XS/XS.pm (file contents):
Revision 1.47 by root, Mon Jun 25 06:57:42 2007 UTC vs.
Revision 1.49 by root, Sun Jul 1 14:08:03 2007 UTC

9 # exported functions, they croak on error 9 # exported functions, they croak on error
10 # and expect/generate UTF-8 10 # and expect/generate UTF-8
11 11
12 $utf8_encoded_json_text = to_json $perl_hash_or_arrayref; 12 $utf8_encoded_json_text = to_json $perl_hash_or_arrayref;
13 $perl_hash_or_arrayref = from_json $utf8_encoded_json_text; 13 $perl_hash_or_arrayref = from_json $utf8_encoded_json_text;
14
15 # objToJson and jsonToObj aliases to to_json and from_json
16 # are exported for compatibility to the JSON module,
17 # but should not be used in new code.
18 14
19 # OO-interface 15 # OO-interface
20 16
21 $coder = JSON::XS->new->ascii->pretty->allow_nonref; 17 $coder = JSON::XS->new->ascii->pretty->allow_nonref;
22 $pretty_printed_unencoded = $coder->encode ($perl_scalar); 18 $pretty_printed_unencoded = $coder->encode ($perl_scalar);
88use strict; 84use strict;
89 85
90our $VERSION = '1.4'; 86our $VERSION = '1.4';
91our @ISA = qw(Exporter); 87our @ISA = qw(Exporter);
92 88
93our @EXPORT = qw(to_json from_json objToJson jsonToObj); 89our @EXPORT = qw(to_json from_json);
94 90
95use Exporter; 91use Exporter;
96use XSLoader; 92use XSLoader;
97 93
98=head1 FUNCTIONAL INTERFACE 94=head1 FUNCTIONAL INTERFACE
711It shows the number of encodes/decodes per second (JSON::XS uses 707It shows the number of encodes/decodes per second (JSON::XS uses
712the functional interface, while JSON::XS/2 uses the OO interface 708the functional interface, while JSON::XS/2 uses the OO interface
713with pretty-printing and hashkey sorting enabled, JSON::XS/3 enables 709with pretty-printing and hashkey sorting enabled, JSON::XS/3 enables
714shrink). Higher is better: 710shrink). Higher is better:
715 711
712 Storable | 15779.925 | 14169.946 |
713 -----------+------------+------------+
716 module | encode | decode | 714 module | encode | decode |
717 -----------|------------|------------| 715 -----------|------------|------------|
718 JSON | 7645.468 | 4208.613 | 716 JSON | 4990.842 | 4088.813 |
719 JSON::DWIW | 40721.398 | 77101.176 | 717 JSON::DWIW | 51653.990 | 71575.154 |
720 JSON::PC | 65948.176 | 78251.940 | 718 JSON::PC | 65948.176 | 74631.744 |
721 JSON::Syck | 22844.793 | 26479.192 | 719 JSON::PP | 8931.652 | 3817.168 |
720 JSON::Syck | 24877.248 | 27776.848 |
722 JSON::XS | 388361.481 | 199728.762 | 721 JSON::XS | 388361.481 | 227951.304 |
723 JSON::XS/2 | 218453.333 | 192399.266 | 722 JSON::XS/2 | 227951.304 | 218453.333 |
724 JSON::XS/3 | 338250.323 | 192399.266 | 723 JSON::XS/3 | 338250.323 | 218453.333 |
725 Storable | 15779.925 | 14169.946 | 724 Storable | 16500.016 | 135300.129 |
726 -----------+------------+------------+ 725 -----------+------------+------------+
727 726
728That is, JSON::XS is about five times faster than JSON::DWIW on encoding, 727That is, JSON::XS is about five times faster than JSON::DWIW on encoding,
729about three times faster on decoding, and over fourty times faster 728about three times faster on decoding, and over fourty times faster
730than JSON, even with pretty-printing and key sorting. It also compares 729than JSON, even with pretty-printing and key sorting. It also compares
733Using a longer test string (roughly 18KB, generated from Yahoo! Locals 732Using a longer test string (roughly 18KB, generated from Yahoo! Locals
734search API (http://nanoref.com/yahooapis/mgPdGg): 733search API (http://nanoref.com/yahooapis/mgPdGg):
735 734
736 module | encode | decode | 735 module | encode | decode |
737 -----------|------------|------------| 736 -----------|------------|------------|
738 JSON | 254.685 | 37.665 | 737 JSON | 55.260 | 34.971 |
739 JSON::DWIW | 843.343 | 1049.731 | 738 JSON::DWIW | 825.228 | 1082.513 |
740 JSON::PC | 3602.116 | 2307.352 | 739 JSON::PC | 3571.444 | 2394.829 |
740 JSON::PP | 210.987 | 32.574 |
741 JSON::Syck | 505.107 | 787.899 | 741 JSON::Syck | 552.551 | 787.544 |
742 JSON::XS | 5747.196 | 3690.220 | 742 JSON::XS | 5780.463 | 4854.519 |
743 JSON::XS/2 | 3968.121 | 3676.634 | 743 JSON::XS/2 | 3869.998 | 4798.975 |
744 JSON::XS/3 | 6105.246 | 3662.508 | 744 JSON::XS/3 | 5862.880 | 4798.975 |
745 Storable | 4417.337 | 5285.161 | 745 Storable | 4445.002 | 5235.027 |
746 -----------+------------+------------+ 746 -----------+------------+------------+
747 747
748Again, JSON::XS leads by far (except for Storable which non-surprisingly 748Again, JSON::XS leads by far (except for Storable which non-surprisingly
749decodes faster). 749decodes faster).
750 750

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines