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.35 by root, Wed May 9 16:41:12 2007 UTC vs.
Revision 1.38 by root, Wed Jun 6 18:16:52 2007 UTC

86package JSON::XS; 86package JSON::XS;
87 87
88use strict; 88use strict;
89 89
90BEGIN { 90BEGIN {
91 our $VERSION = '1.21'; 91 our $VERSION = '1.23';
92 our @ISA = qw(Exporter); 92 our @ISA = qw(Exporter);
93 93
94 our @EXPORT = qw(to_json from_json objToJson jsonToObj); 94 our @EXPORT = qw(to_json from_json objToJson jsonToObj);
95 require Exporter; 95 require Exporter;
96 96
612It seems that JSON::XS is surprisingly fast, as shown in the following 612It seems that JSON::XS is surprisingly fast, as shown in the following
613tables. They have been generated with the help of the C<eg/bench> program 613tables. They have been generated with the help of the C<eg/bench> program
614in the JSON::XS distribution, to make it easy to compare on your own 614in the JSON::XS distribution, to make it easy to compare on your own
615system. 615system.
616 616
617First comes a comparison between various modules using a very short JSON 617First comes a comparison between various modules using a very short
618string: 618single-line JSON string:
619 619
620 {"method": "handleMessage", "params": ["user1", "we were just talking"], "id": null} 620 {"method": "handleMessage", "params": ["user1", "we were just talking"], \
621 "id": null, "array":[1,11,234,-5,1e5,1e7, true, false]}
621 622
622It shows the number of encodes/decodes per second (JSON::XS uses the 623It shows the number of encodes/decodes per second (JSON::XS uses the
623functional interface, while JSON::XS/2 uses the OO interface with 624functional interface, while JSON::XS/2 uses the OO interface with
624pretty-printing and hashkey sorting enabled). Higher is better: 625pretty-printing and hashkey sorting enabled). Higher is better:
625 626
626 module | encode | decode | 627 module | encode | decode |
627 -----------|------------|------------| 628 -----------|------------|------------|
628 JSON | 11488.516 | 7823.035 | 629 JSON | 7645.468 | 4208.613 |
629 JSON::DWIW | 94708.054 | 129094.260 | 630 JSON::DWIW | 68534.379 | 79437.576 |
630 JSON::PC | 63884.157 | 128528.212 | 631 JSON::PC | 65948.176 | 78251.940 |
631 JSON::Syck | 34898.677 | 42096.911 | 632 JSON::Syck | 23379.621 | 28416.694 |
632 JSON::XS | 654027.064 | 396423.669 | 633 JSON::XS | 388361.481 | 199728.762 |
633 JSON::XS/2 | 371564.190 | 371725.613 | 634 JSON::XS/2 | 218453.333 | 192399.266 |
635 JSON::XS/3 | 338250.323 | 192399.266 |
636 Storable | 15732.573 | 28571.553 |
634 -----------+------------+------------+ 637 -----------+------------+------------+
635 638
636That is, JSON::XS is more than six times faster than JSON::DWIW on 639That is, JSON::XS is about five times faster than JSON::DWIW on encoding,
637encoding, more than three times faster on decoding, and about thirty times 640about three times faster on decoding, and over fourty times faster
638faster than JSON, even with pretty-printing and key sorting. 641than JSON, even with pretty-printing and key sorting. It also compares
642favourably to Storable for small amounts of data.
639 643
640Using a longer test string (roughly 18KB, generated from Yahoo! Locals 644Using a longer test string (roughly 18KB, generated from Yahoo! Locals
641search API (http://nanoref.com/yahooapis/mgPdGg): 645search API (http://nanoref.com/yahooapis/mgPdGg):
642 646
643 module | encode | decode | 647 module | encode | decode |
644 -----------|------------|------------| 648 -----------|------------|------------|
645 JSON | 273.023 | 44.674 | 649 JSON | 254.685 | 37.665 |
646 JSON::DWIW | 1089.383 | 1145.704 | 650 JSON::DWIW | 1014.244 | 1087.678 |
647 JSON::PC | 3097.419 | 2393.921 | 651 JSON::PC | 3602.116 | 2307.352 |
648 JSON::Syck | 514.060 | 843.053 | 652 JSON::Syck | 558.035 | 776.263 |
649 JSON::XS | 6479.668 | 3636.364 | 653 JSON::XS | 5747.196 | 3543.684 |
650 JSON::XS/2 | 3774.221 | 3599.124 | 654 JSON::XS/2 | 3968.121 | 3589.170 |
655 JSON::XS/3 | 6105.246 | 3561.134 |
656 Storable | 4456.337 | 5320.020 |
651 -----------+------------+------------+ 657 -----------+------------+------------+
652 658
653Again, JSON::XS leads by far. 659Again, JSON::XS leads by far.
654 660
655On large strings containing lots of high unicode characters, some modules 661On large strings containing lots of high unicode characters, some modules

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines