ハッシュ関数の性能を測ってみた
結果は以下。
ハッシュ関数 | 所要時間(秒) |
---|---|
sha1 | 0.913 |
sha256 | 1.572 |
sha384 | 3.039 |
sha512 | 3.024 |
md5 | 0.86 |
rmd160 | 1.1 |
hash | 0.797 |
(何も実行しない:比較用) | 0.692 |
計測環境は以下。
- CPU : Intel Core 2 Duo 2.19GHz
- メモリ : 1.99 GB
計測に使用したスクリプトは次の通り。
require 'digest/sha1' require 'digest/sha2' require 'digest/md5' require 'digest/rmd160' # blockを10回実行した場合の時間を計る。 def time(name, &block) start = Time.now 10000.times {|i| block.call("a"*i) } puts "#{name} : #{(Time.now-start).to_s}" end # sha1 time( "sha1" ) {|str| Digest::SHA1.digest(str) } # sha256 time( "sha256" ) {|str| Digest::SHA256.digest(str) } # sha384 time( "sha384" ) {|str| Digest::SHA384.digest(str) } # sha512 time( "sha512" ) {|str| Digest::SHA512.digest(str) } # md5 time( "md5" ) {|str| Digest::MD5.digest(str) } # rmd160 time( "rmd160" ) {|str| Digest::RMD160.digest(str) } # hash time( "hash" ) {|str| str.hash } # empty time( "empty" ) {|str| }