… | |
… | |
86 | package JSON::XS; |
86 | package JSON::XS; |
87 | |
87 | |
88 | use strict; |
88 | use strict; |
89 | |
89 | |
90 | BEGIN { |
90 | BEGIN { |
91 | our $VERSION = '1.23'; |
91 | our $VERSION = '1.24'; |
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 | |
… | |
… | |
651 | shrink). Higher is better: |
651 | shrink). Higher is better: |
652 | |
652 | |
653 | module | encode | decode | |
653 | module | encode | decode | |
654 | -----------|------------|------------| |
654 | -----------|------------|------------| |
655 | JSON | 7645.468 | 4208.613 | |
655 | JSON | 7645.468 | 4208.613 | |
656 | JSON::DWIW | 68534.379 | 79437.576 | |
656 | JSON::DWIW | 40721.398 | 77101.176 | |
657 | JSON::PC | 65948.176 | 78251.940 | |
657 | JSON::PC | 65948.176 | 78251.940 | |
658 | JSON::Syck | 23379.621 | 28416.694 | |
658 | JSON::Syck | 22844.793 | 26479.192 | |
659 | JSON::XS | 388361.481 | 199728.762 | |
659 | JSON::XS | 388361.481 | 199728.762 | |
660 | JSON::XS/2 | 218453.333 | 192399.266 | |
660 | JSON::XS/2 | 218453.333 | 192399.266 | |
661 | JSON::XS/3 | 338250.323 | 192399.266 | |
661 | JSON::XS/3 | 338250.323 | 192399.266 | |
662 | Storable | 15732.573 | 28571.553 | |
662 | Storable | 15779.925 | 14169.946 | |
663 | -----------+------------+------------+ |
663 | -----------+------------+------------+ |
664 | |
664 | |
665 | That is, JSON::XS is about five times faster than JSON::DWIW on encoding, |
665 | That is, JSON::XS is about five times faster than JSON::DWIW on encoding, |
666 | about three times faster on decoding, and over fourty times faster |
666 | about three times faster on decoding, and over fourty times faster |
667 | than JSON, even with pretty-printing and key sorting. It also compares |
667 | than JSON, even with pretty-printing and key sorting. It also compares |
… | |
… | |
671 | search API (http://nanoref.com/yahooapis/mgPdGg): |
671 | search API (http://nanoref.com/yahooapis/mgPdGg): |
672 | |
672 | |
673 | module | encode | decode | |
673 | module | encode | decode | |
674 | -----------|------------|------------| |
674 | -----------|------------|------------| |
675 | JSON | 254.685 | 37.665 | |
675 | JSON | 254.685 | 37.665 | |
676 | JSON::DWIW | 1014.244 | 1087.678 | |
676 | JSON::DWIW | 843.343 | 1049.731 | |
677 | JSON::PC | 3602.116 | 2307.352 | |
677 | JSON::PC | 3602.116 | 2307.352 | |
678 | JSON::Syck | 558.035 | 776.263 | |
678 | JSON::Syck | 505.107 | 787.899 | |
679 | JSON::XS | 5747.196 | 3543.684 | |
679 | JSON::XS | 5747.196 | 3690.220 | |
680 | JSON::XS/2 | 3968.121 | 3589.170 | |
680 | JSON::XS/2 | 3968.121 | 3676.634 | |
681 | JSON::XS/3 | 6105.246 | 3561.134 | |
681 | JSON::XS/3 | 6105.246 | 3662.508 | |
682 | Storable | 4456.337 | 5320.020 | |
682 | Storable | 4417.337 | 5285.161 | |
683 | -----------+------------+------------+ |
683 | -----------+------------+------------+ |
684 | |
684 | |
685 | Again, JSON::XS leads by far. |
685 | Again, JSON::XS leads by far (except for Storable which non-surprisingly |
|
|
686 | decodes faster). |
686 | |
687 | |
687 | On large strings containing lots of high unicode characters, some modules |
688 | On large strings containing lots of high unicode characters, some modules |
688 | (such as JSON::PC) seem to decode faster than JSON::XS, but the result |
689 | (such as JSON::PC) seem to decode faster than JSON::XS, but the result |
689 | will be broken due to missing (or wrong) unicode handling. Others refuse |
690 | will be broken due to missing (or wrong) unicode handling. Others refuse |
690 | to decode or encode properly, so it was impossible to prepare a fair |
691 | to decode or encode properly, so it was impossible to prepare a fair |