#!/usr/bin/env perl
use Benchmark 'cmpthese';
use URI::Escape;
use URI::Encode::XS;

cmpthese(-10, {
    escape      => sub { URI::Escape::uri_escape('https://stackoverflow.com/questions/3629212/how can perls xsub die') },
    encode      => sub { URI::Encode::XS::uri_encode('https://stackoverflow.com/questions/3629212/how can perls xsub die') },
    encode_utf8 => sub { URI::Encode::XS::uri_encode_utf8('https://stackoverflow.com/questions/3629212/how can perls xsub die') },
  });
cmpthese(-10, {
    unescape    => sub { URI::Escape::uri_unescape('https%3A%2F%2Fstackoverflow.com%2Fquestions%2F3629212%2Fhow%20can%20perls%20xsub%20die') },
    decode      => sub { URI::Encode::XS::uri_decode('https%3A%2F%2Fstackoverflow.com%2Fquestions%2F3629212%2Fhow%20can%20perls%20xsub%20die') },
    decode_utf8 => sub { URI::Encode::XS::uri_decode_utf8('https%3A%2F%2Fstackoverflow.com%2Fquestions%2F3629212%2Fhow%20can%20perls%20xsub%20die') },
  });
__END__
=head1 RESULTS

                   Rate      escape encode_utf8      encode
  escape       140114/s          --        -94%        -98%
  encode_utf8 2255100/s       1509%          --        -71%
  encode      7735189/s       5421%        243%          --

                   Rate    unescape decode_utf8      decode
  unescape     188714/s          --        -95%        -97%
  decode_utf8 3744638/s       1884%          --        -50%
  decode      7429263/s       3837%         98%          --

=cut