Digest-SIMD

 view release on metacpan or  search on metacpan

ex/benchmark.pl  view on Meta::CPAN

#!/usr/bin/env perl
use strict;
use warnings;

use Benchmark qw(timethese);
use Getopt::Long qw(GetOptions :config no_ignore_case);
use List::Util qw(max);

# Install Task::Digest
use Crypt::RIPEMD160      ();
use Digest::BLAKE         ();
use Digest::BMW           ();
use Digest::CubeHash      ();
use Digest::ECHO          ();
use Digest::Fugue         ();
use Digest::GOST          ();
use Digest::Groestl       ();
use Digest::Hamsi         ();
use Digest::JH            ();
use Digest::Keccak        ();
use Digest::Luffa         ();
use Digest::MD2           ();
use Digest::MD4           ();
use Digest::MD5           ();
use Digest::MD6           ();
use Digest::Perl::MD4     ();
use Digest::Perl::MD5     ();
use Digest::SHA           ();
use Digest::SHA1          ();
use Digest::SHA::PurePerl ();
use Digest::SHAvite3      ();
use Digest::SIMD          ();
use Digest::Shabal        ();
use Digest::Skein         ();
use Digest::Whirlpool     ();

my %opts = (
    iterations => -1,
    size       => 1,  # kB
);
GetOptions(\%opts, 'iterations|i=i', 'size|s=f',);

my $data = '01234567' x (128 * $opts{size});

my %digests = (
    blake_224    => sub { Digest::BLAKE::blake_224($data) },
    blake_256    => sub { Digest::BLAKE::blake_256($data) },
    blake_384    => sub { Digest::BLAKE::blake_384($data) },
    blake_512    => sub { Digest::BLAKE::blake_512($data) },
    bmw_224      => sub { Digest::BMW::bmw_224($data) },
    bmw_256      => sub { Digest::BMW::bmw_256($data) },
    bmw_384      => sub { Digest::BMW::bmw_384($data) },
    bmw_512      => sub { Digest::BMW::bmw_512($data) },
    cubehash_224 => sub { Digest::CubeHash::cubehash_224($data) },
    cubehash_256 => sub { Digest::CubeHash::cubehash_256($data) },
    cubehash_384 => sub { Digest::CubeHash::cubehash_384($data) },
    cubehash_512 => sub { Digest::CubeHash::cubehash_512($data) },
    echo_224     => sub { Digest::ECHO::echo_224($data) },
    echo_256     => sub { Digest::ECHO::echo_256($data) },
    echo_384     => sub { Digest::ECHO::echo_384($data) },
    echo_512     => sub { Digest::ECHO::echo_512($data) },
    fugue_224    => sub { Digest::Fugue::fugue_224($data) },
    fugue_256    => sub { Digest::Fugue::fugue_256($data) },
    fugue_384    => sub { Digest::Fugue::fugue_384($data) },
    fugue_512    => sub { Digest::Fugue::fugue_512($data) },
    gost         => sub { Digest::GOST::gost($data) },
    groestl_224  => sub { Digest::Groestl::groestl_224($data) },
    groestl_256  => sub { Digest::Groestl::groestl_256($data) },
    groestl_384  => sub { Digest::Groestl::groestl_384($data) },
    groestl_512  => sub { Digest::Groestl::groestl_512($data) },
    hamsi_224    => sub { Digest::Hamsi::hamsi_224($data) },
    hamsi_256    => sub { Digest::Hamsi::hamsi_256($data) },
    hamsi_384    => sub { Digest::Hamsi::hamsi_384($data) },
    hamsi_512    => sub { Digest::Hamsi::hamsi_512($data) },
    jh_224       => sub { Digest::JH::jh_224($data) },
    jh_256       => sub { Digest::JH::jh_256($data) },
    jh_384       => sub { Digest::JH::jh_384($data) },
    jh_512       => sub { Digest::JH::jh_512($data) },
    keccak_224   => sub { Digest::Keccak::keccak_224($data) },
    keccak_256   => sub { Digest::Keccak::keccak_256($data) },
    keccak_384   => sub { Digest::Keccak::keccak_384($data) },
    keccak_512   => sub { Digest::Keccak::keccak_512($data) },
    luffa_224    => sub { Digest::Luffa::luffa_224($data) },
    luffa_256    => sub { Digest::Luffa::luffa_256($data) },
    luffa_384    => sub { Digest::Luffa::luffa_384($data) },
    luffa_512    => sub { Digest::Luffa::luffa_512($data) },
    md2          => sub { Digest::MD2::md2($data) },
    md4          => sub { Digest::MD4::md4($data) },
    md5          => sub { Digest::MD5::md5($data) },
    md6_224      => sub { Digest::MD6::md6_224($data) },
    md6_256      => sub { Digest::MD6::md6_256($data) },
    md6_384      => sub { Digest::MD6::md6_384($data) },
    md6_512      => sub { Digest::MD6::md6_512($data) },
    perl_md4     => sub { Digest::Perl::MD4::md4($data) },
    perl_md5     => sub { Digest::Perl::MD4::md4($data) },
    perl_sha_1   => sub { Digest::SHA::PurePerl::sha1($data) },
    perl_sha_224 => sub { Digest::SHA::PurePerl::sha224($data) },
    perl_sha_256 => sub { Digest::SHA::PurePerl::sha256($data) },
    perl_sha_384 => sub { Digest::SHA::PurePerl::sha384($data) },
    perl_sha_512 => sub { Digest::SHA::PurePerl::sha512($data) },
    ripemd_160   => sub {



( run in 1.091 second using v1.01-cache-2.11-cpan-71847e10f99 )