ふと、
ruby の Digest 関数のベンチマークを取ってみた。
*
Pentium4 3.8GHz (Cygwin)
% ruby -v
ruby 1.8.4 (2005-12-24) [i386-cygwin]
% ruby hash-bench.rb
user system total real
Digest::MD5 3.047000 0.000000 3.047000 ( 3.047000)
Digest::SHA1 3.156000 0.000000 3.156000 ( 3.187000)
Digest::SHA256 4.078000 0.000000 4.078000 ( 4.094000)
Digest::SHA384 8.203000 0.000000 8.203000 ( 8.203000)
Digest::SHA512 8.250000 0.000000 8.250000 ( 8.250000)
Digest::RMD160 3.375000 0.000000 3.375000 ( 3.375000)
*
Pentium4 3.8GHz (mswin32)
% ruby -v
ruby 1.8.4 (2005-12-24) [i386-mswin32]
% ruby hash-bench.rb
user system total real
Digest::MD5 3.328000 0.031000 3.359000 ( 3.360000)
Digest::SHA1 5.297000 0.000000 5.297000 ( 5.312000)
Digest::SHA256 4.140000 0.000000 4.140000 ( 4.156000)
Digest::SHA384 11.204000 0.078000 11.282000 ( 11.313000)
Digest::SHA512 11.375000 0.047000 11.422000 ( 11.422000)
Digest::RMD160 4.843000 0.031000 4.874000 ( 4.875000)
*
Pentium3 1GHz (Linux)
% ruby -v
ruby 1.8.4 (2005-12-24) [i486-linux]
% ruby hash-bench.rb
user system total real
Digest::MD5 7.500000 0.230000 7.730000 ( 7.740531)
Digest::SHA1 13.880000 0.230000 14.110000 ( 14.125126)
Digest::SHA256 10.700000 0.250000 10.950000 ( 10.965380)
Digest::SHA384 25.400000 0.230000 25.630000 ( 25.658187)
Digest::SHA512 25.570000 0.210000 25.780000 ( 25.829633)
Digest::RMD160 9.710000 0.320000 10.030000 ( 10.038026)
*
Pentum2 333MHz (Linux)
% ruby -v
ruby 1.8.4 (2005-12-24) [i486-linux]
% ruby hash-bench.rb
user system total real
Digest::MD5 17.170000 0.560000 17.730000 ( 17.943352)
Digest::SHA1 39.290000 0.710000 40.000000 ( 40.467034)
Digest::SHA256 26.750000 0.640000 27.390000 ( 27.704968)
Digest::SHA384 69.940000 0.670000 70.610000 ( 71.399287)
Digest::SHA512 70.380000 0.790000 71.170000 ( 71.998776)
Digest::RMD160 26.700000 0.690000 27.390000 ( 27.714503)
*
USIIIi 1.06G (Solaris 8)
% ruby -v
ruby 1.8.2 (2004-12-25) [sparc-solaris2.8]
% ruby hash-bench.rb
user system total real
Digest::MD5 6.980000 0.000000 6.980000 ( 6.980063)
Digest::SHA1 10.570000 0.000000 10.570000 ( 10.607394)
Digest::SHA256 8.480000 0.000000 8.480000 ( 8.506520)
Digest::SHA384 27.780000 0.000000 27.780000 ( 27.991965)
Digest::SHA512 28.010000 0.000000 28.010000 ( 28.224850)
Digest::RMD160 7.780000 0.000000 7.780000 ( 7.940436)
*
比較
各マシンでの MD5 の計算時間との比をグラフにすると、以下のようになった。
Cygwin を除くと、MD5 < RMD160 <= SHA256 < SHA1 < SHA384 = SHA512
って感じですな。