=head1 NAME FU::Benchmarks - A bunch of automated benchmark results. =head1 DESCRIPTION This file is automatically generated from 'bench.PL' in the L distribution. These benchmarks compare performance of some FU functionality against similar modules found on CPAN. B Obtaining accurate measurements is notoriously hard. Take the numbers below with a few buckets of salt, any difference below 10% is most likely noise. B Goodhart's law: "When a measure becomes a target, it ceases to be a good measure". I've used these benchmarks to find and optimize hotspots in FU, which in turn means these numbers may look better than they are in real-world use. B Many of these benchmarks exists solely to test edge case performance, these numbers are not representative for real-world use. =head1 MODULE VERSIONS The following module versions were used: =over =item L 4.38 =item L 0.1 =item L 4.16 =item L 1.06 =item L 4.03 =back =head1 BENCHMARKS =head2 JSON Parsing & Formatting These benchmarks run on large-ish arrays with repeated values. JSON encoding is sufficiently fast that Perl function calling overhead tends to dominate for smaller inputs, but I don't find that overhead very interesting. Also worth noting that JSON::SIMD formatting code is forked from JSON::XS, the SIMD parts are only used for parsing. API object from L documentation. Encode Canonical Decode JSON::PP 5397/s 4973/s 1290/s Cpanel::JSON::XS 112845/s 102903/s 101843/s JSON::SIMD 125127/s 116569/s 117446/s JSON::XS 128792/s 118616/s 117257/s FU::Util 136151/s 115564/s 120184/s Object (small) Encode Canonical Decode JSON::PP 905/s 827/s 206/s Cpanel::JSON::XS 42755/s 27849/s 18920/s JSON::SIMD 48487/s 30266/s 22527/s JSON::XS 48980/s 30558/s 24065/s FU::Util 49346/s 26316/s 20768/s Object (large) Encode Canonical Decode JSON::PP 916/s 744/s 105/s Cpanel::JSON::XS 29889/s 11629/s 16264/s JSON::SIMD 33950/s 12050/s 22649/s JSON::XS 34534/s 12399/s 23418/s FU::Util 40482/s 13735/s 18161/s Object (large, mixed unicode) Encode Canonical Decode JSON::PP 845/s 699/s 86/s Cpanel::JSON::XS 20563/s 1402/s 7590/s JSON::SIMD 24996/s 1401/s 15959/s JSON::XS 26915/s 1454/s 8848/s FU::Util 24706/s 11403/s 9379/s Small integers Encode Decode JSON::PP 113/s 29/s Cpanel::JSON::XS 7235/s 6008/s JSON::SIMD 8058/s 4335/s JSON::XS 8036/s 5998/s FU::Util 8701/s 5902/s Large integers Encode Decode JSON::PP 2174/s 330/s Cpanel::JSON::XS 31337/s 48514/s JSON::SIMD 36876/s 52446/s JSON::XS 36665/s 48689/s FU::Util 122700/s 62048/s ASCII strings Encode Decode JSON::PP 2922/s 341/s Cpanel::JSON::XS 117604/s 43652/s JSON::SIMD 136214/s 50865/s JSON::XS 136486/s 40599/s FU::Util 192974/s 43327/s Unicode strings Encode Decode JSON::PP 5144/s 254/s Cpanel::JSON::XS 92871/s 66032/s JSON::SIMD 106664/s 100555/s JSON::XS 104716/s 60538/s FU::Util 124756/s 49825/s String escaping (few) Encode Decode JSON::PP 4258/s 350/s Cpanel::JSON::XS 133222/s 104174/s JSON::SIMD 155205/s 148939/s JSON::XS 123154/s 92594/s FU::Util 202792/s 85352/s String escaping (many) Encode Decode JSON::PP 2230/s 360/s Cpanel::JSON::XS 139049/s 99260/s JSON::SIMD 152317/s 113037/s JSON::XS 153421/s 107918/s FU::Util 132523/s 78199/s =cut # Cached data used by bench.PL. Same as the formatted tables above but easier to parse. json/api Canonical Cpanel::JSON::XS 102903 json/api Canonical FU::Util 115564 json/api Canonical JSON::PP 4973 json/api Canonical JSON::SIMD 116569 json/api Canonical JSON::XS 118616 json/api Decode Cpanel::JSON::XS 101843 json/api Decode FU::Util 120184 json/api Decode JSON::PP 1290 json/api Decode JSON::SIMD 117446 json/api Decode JSON::XS 117257 json/api Encode Cpanel::JSON::XS 112845 json/api Encode FU::Util 136151 json/api Encode JSON::PP 5397 json/api Encode JSON::SIMD 125127 json/api Encode JSON::XS 128792 json/intl Decode Cpanel::JSON::XS 48514 json/intl Decode FU::Util 62048 json/intl Decode JSON::PP 330 json/intl Decode JSON::SIMD 52446 json/intl Decode JSON::XS 48689 json/intl Encode Cpanel::JSON::XS 31337 json/intl Encode FU::Util 122700 json/intl Encode JSON::PP 2174 json/intl Encode JSON::SIMD 36876 json/intl Encode JSON::XS 36665 json/ints Decode Cpanel::JSON::XS 6008 json/ints Decode FU::Util 5902 json/ints Decode JSON::PP 29 json/ints Decode JSON::SIMD 4335 json/ints Decode JSON::XS 5998 json/ints Encode Cpanel::JSON::XS 7235 json/ints Encode FU::Util 8701 json/ints Encode JSON::PP 113 json/ints Encode JSON::SIMD 8058 json/ints Encode JSON::XS 8036 json/objl Canonical Cpanel::JSON::XS 11629 json/objl Canonical FU::Util 13735 json/objl Canonical JSON::PP 744 json/objl Canonical JSON::SIMD 12050 json/objl Canonical JSON::XS 12399 json/objl Decode Cpanel::JSON::XS 16264 json/objl Decode FU::Util 18161 json/objl Decode JSON::PP 105 json/objl Decode JSON::SIMD 22649 json/objl Decode JSON::XS 23418 json/objl Encode Cpanel::JSON::XS 29889 json/objl Encode FU::Util 40482 json/objl Encode JSON::PP 916 json/objl Encode JSON::SIMD 33950 json/objl Encode JSON::XS 34534 json/objs Canonical Cpanel::JSON::XS 27849 json/objs Canonical FU::Util 26316 json/objs Canonical JSON::PP 827 json/objs Canonical JSON::SIMD 30266 json/objs Canonical JSON::XS 30558 json/objs Decode Cpanel::JSON::XS 18920 json/objs Decode FU::Util 20768 json/objs Decode JSON::PP 206 json/objs Decode JSON::SIMD 22527 json/objs Decode JSON::XS 24065 json/objs Encode Cpanel::JSON::XS 42755 json/objs Encode FU::Util 49346 json/objs Encode JSON::PP 905 json/objs Encode JSON::SIMD 48487 json/objs Encode JSON::XS 48980 json/obju Canonical Cpanel::JSON::XS 1402 json/obju Canonical FU::Util 11403 json/obju Canonical JSON::PP 699 json/obju Canonical JSON::SIMD 1401 json/obju Canonical JSON::XS 1454 json/obju Decode Cpanel::JSON::XS 7590 json/obju Decode FU::Util 9379 json/obju Decode JSON::PP 86 json/obju Decode JSON::SIMD 15959 json/obju Decode JSON::XS 8848 json/obju Encode Cpanel::JSON::XS 20563 json/obju Encode FU::Util 24706 json/obju Encode JSON::PP 845 json/obju Encode JSON::SIMD 24996 json/obju Encode JSON::XS 26915 json/strel Decode Cpanel::JSON::XS 99260 json/strel Decode FU::Util 78199 json/strel Decode JSON::PP 360 json/strel Decode JSON::SIMD 113037 json/strel Decode JSON::XS 107918 json/strel Encode Cpanel::JSON::XS 139049 json/strel Encode FU::Util 132523 json/strel Encode JSON::PP 2230 json/strel Encode JSON::SIMD 152317 json/strel Encode JSON::XS 153421 json/stres Decode Cpanel::JSON::XS 104174 json/stres Decode FU::Util 85352 json/stres Decode JSON::PP 350 json/stres Decode JSON::SIMD 148939 json/stres Decode JSON::XS 92594 json/stres Encode Cpanel::JSON::XS 133222 json/stres Encode FU::Util 202792 json/stres Encode JSON::PP 4258 json/stres Encode JSON::SIMD 155205 json/stres Encode JSON::XS 123154 json/strs Decode Cpanel::JSON::XS 43652 json/strs Decode FU::Util 43327 json/strs Decode JSON::PP 341 json/strs Decode JSON::SIMD 50865 json/strs Decode JSON::XS 40599 json/strs Encode Cpanel::JSON::XS 117604 json/strs Encode FU::Util 192974 json/strs Encode JSON::PP 2922 json/strs Encode JSON::SIMD 136214 json/strs Encode JSON::XS 136486 json/stru Decode Cpanel::JSON::XS 66032 json/stru Decode FU::Util 49825 json/stru Decode JSON::PP 254 json/stru Decode JSON::SIMD 100555 json/stru Decode JSON::XS 60538 json/stru Encode Cpanel::JSON::XS 92871 json/stru Encode FU::Util 124756 json/stru Encode JSON::PP 5144 json/stru Encode JSON::SIMD 106664 json/stru Encode JSON::XS 104716