【powershell】Get-FileHashによるハッシュ取得にかかる時間
ファイルの同一性を示すのにハッシュ使えばいいのでは?って会社で言ったら、時間かかるんじゃないの~?と不要な心配をする方がいたのでデータを取ってみる。
目次
本文
1. ファイルサイズが大きい場合
1.1 テストファイル
以下のISOファイルをテストに使用する。
3968434176 Bytes(about 3.8GB) debian-11.0.0-i386-DVD-1.iso
1.2 実測
一応3回ずつ計測したが、大して差がなかったので初回の結果だけ掲載する。
2021年9月5日 22:26:24 Algorithm : MD5 Hash : CFD45B47C623AFD0CCACFF3C21830853 Path : D:\hisabo\Downloads\debian-11.0.0-i386-DVD-1.iso 2021年9月5日 22:26:35 11sec
2021年9月5日 22:28:38 Algorithm : SHA256 Hash : 2B6D2CF276703DFD5EEE6F0F8A03E1FBF1ECE5585019FFCFE18990EDC5C59FA0 Path : D:\hisabo\Downloads\debian-11.0.0-i386-DVD-1.iso 2021年9月5日 22:29:00 22sec
2021年9月5日 22:30:57 Algorithm : SHA512 Hash : 57024D281490327A8EEE9F010D96D2234986A360C43E34B79A55B01C5151984537F42ED751A0663FFFF5A8A04C89E9F51F73C2BDBC9820B1F64EDEF16F9CE42D Path : D:\hisabo\Downloads\debian-11.0.0-i386-DVD-1.iso 2021年9月5日 22:31:11 14sec
SHA256 が一番時間がかかることが分かった。
2. ファイル数が大きい場合
1.1 テストファイル
デジカメで撮った画像ファイル群をテストに使用する。
HDD上に配置し、各ファイルサイズは250kb~5MB程度である。
フォルダの状況は下記の通り。
ファイル数: 10,002、フォルダー数: 0 20.9 GB (22,457,794,560 バイト)
1.2 実測
量が多いので1回ずつ。
(1)MD5
開始:2021年9月7日 22:01:07 終了:2021年9月7日 22:04:28 201sec
(2)SHA256
開始:2021年9月7日 22:16:00 終了:2021年9月7日 22:19:33 213sec
(3)SHA512
開始:2021年9月7日 22:19:55 終了:2021年9月7日 22:25:56 361sec
コードは以下の通り。SHA512で時間がかかったのは、logファイルにハッシュ値をout-Fileしているからかもしれない。 SHA512がハッシュ値としては一番長く、書きだす量も多くなる。
# MD5, SHA128,SHA512で実施(logファイル名、Algorithm を適宜変更) $log = "SHA512.log" $a = Get-ChildItem -Recurse -Path "Work" Get-Date| Out-File -FilePath $log -Append $a | %{ Get-FileHash -Algorithm SHA512 $_.FullName } | Out-File -FilePath $log -Append Get-Date| Out-File -FilePath $log -Append
3. ハッシュ値を取得するのに時間がかかるか?
どのくらいを目標値とするかは人それぞれだと思うが、それほど頻繁に行う作業でもないので上記くらいの処理時間は「速い」と私は感じる。
バージョン情報
> $PSVersionTable Name Value ---- ----- PSVersion 5.1.19041.1023