=head1 NAME
URI::Encode::XS - a Perl URI encoder/decoder using C
=head1 SYNOPSIS
use URI::Encode::XS qw/uri_encode uri_decode/;
my $encoded = uri_encode($data);
my $decoded = uri_decode($encoded);
=head1 DESCRIPTION
This is a Perl module that wraps my C URI encoder/decoder based on
L<RFC3986|
https://tools.ietf.org/html/rfc3986>. This module always
encodes characters that are not unreserved.
I've benchmarked it and found it significantly faster than URI::Escape at
encoding and decoding:
Rate escape encode
escape 130275/s -- -96%
encode 3581667/s 2649% --
Rate unescape decode
unescape 189434/s -- -96%
decode 5161471/s 2625% --
However this is just one string - the fewer encoded/decoded characters are
in the string, the closer the benchmark is likely to be (see C<bench> for
details of the benchmark). Different hardware will yield different results.
Another fast encoder/decoder which supports custom escape lists, is
L<URI::XSEscape|
https://metacpan.org/pod/URI::XSEscape>.
=head1 INSTALLATION
$ cpan URI::Encode::XS
Or
$ git clone
https://github.com/dnmfarrell/URI-Encode-XS
$ cd URI-Encode-XS
$ perl Makefile.PL
$ make
$ make test
$ make install
=head1 THANKS
Thanks to Jesse DuMond for helping optimize the C code.
=head1 REPOSITORY
L<
https://github.com/dnmfarrell/URI-Encode-XS>
=head1 LICENSE
See LICENSE
=head1 AUTHOR
E<copy> 2016 David Farrell
=cut