#!/usr/bin/perl
use 5.012;
use Benchmark qw/timethis timethese cmpthese/;
use Encode::Base2N qw/encode_base64 encode_base64url encode_base32 encode_base16 decode_base64 decode_base32 decode_base16/;
use MIME::Base64();
use MIME::Base32();
use MIME::Base32::XS();
my $short = 'hello world hello world';
my $long = 'hello ' x 1000;
say "=========== BASE64 url ==============";
my $SHORT = encode_base64url($short);
my $LONG = encode_base64url($long);
say "==== encode short ===";
cmpthese(-1, {
"Encode::Base2N" => sub { encode_base64url($short) },
"MIME::Base64" => sub { MIME::Base64::encode_base64url($short) },
});
say "==== encode long ===";
cmpthese(-1, {
"Encode::Base2N" => sub { encode_base64url($long) },
"MIME::Base64" => sub { MIME::Base64::encode_base64url($long) },
});
say "==== decode short ===";
cmpthese(-1, {
"Encode::Base2N" => sub { decode_base64($SHORT) },
"MIME::Base64" => sub { MIME::Base64::decode_base64url($SHORT) },
});
say "==== decode long ===";
cmpthese(-1, {
"Encode::Base2N" => sub { decode_base64($LONG) },
"MIME::Base64" => sub { MIME::Base64::decode_base64url($LONG) },
});
say "=========== BASE64 classic ==============";
$SHORT = encode_base64($short);
$LONG = encode_base64($long);
say "==== encode short ===";
cmpthese(-1, {
"Encode::Base2N" => sub { encode_base64($short) },
"MIME::Base64" => sub { MIME::Base64::encode_base64($short) },
});
say "==== encode long ===";
cmpthese(-1, {
"Encode::Base2N" => sub { encode_base64($long) },
"MIME::Base64" => sub { MIME::Base64::encode_base64($long) },
});
say "==== decode short ===";
cmpthese(-1, {
"Encode::Base2N" => sub { decode_base64($SHORT) },
"MIME::Base64" => sub { MIME::Base64::decode_base64($SHORT) },
});
say "==== decode long ===";
cmpthese(-1, {
"Encode::Base2N" => sub { decode_base64($LONG) },
"MIME::Base64" => sub { MIME::Base64::decode_base64($LONG) },
});
say "=========== BASE32 ==============";
$SHORT = encode_base32($short);
$LONG = encode_base32($long);
say "==== encode short ===";
cmpthese(-1, {
"Encode::Base2N" => sub { encode_base32($short) },
"MIME::Base32" => sub { MIME::Base32::encode($short) },
"MIME::Base32::XS" => sub { MIME::Base32::XS::encode_base32($short) },
});
say "==== encode long ===";
cmpthese(-1, {
"Encode::Base2N" => sub { encode_base32($long) },
"MIME::Base32" => sub { MIME::Base32::encode($long) },
"MIME::Base32::XS" => sub { MIME::Base32::XS::encode_base32($long) },
});
say "==== decode short ===";
cmpthese(-1, {
"Encode::Base2N" => sub { decode_base32($SHORT) },
"MIME::Base32" => sub { MIME::Base32::decode($SHORT) },
"MIME::Base32::XS" => sub { MIME::Base32::XS::decode_base32($SHORT) },
});
say "==== decode long ===";
cmpthese(-1, {
"Encode::Base2N" => sub { decode_base32($LONG) },
"MIME::Base32" => sub { MIME::Base32::decode($LONG) },
"MIME::Base32::XS" => sub { MIME::Base32::XS::decode_base32($LONG) },
});
say "=========== BASE16 ==============";
$SHORT = encode_base16($short);
$LONG = encode_base16($long);
timethese(-1, {
encode_short => sub { encode_base16($short) },
encode_long => sub { encode_base16($long) },
decode_short => sub { decode_base16($SHORT) },
decode_long => sub { decode_base16($LONG) },
});