サイトアイコン Unity+AssetStoreおすすめ情報

Powershell が遅かったので早くした(ハッシュ生成、ファイル書き込み)

はじめに

powershell を使って大量にファイルを処理していたのですが、あまりにも遅くて高速化を行ったのでその時の改善内容を残しておきます、誰かのお役に立てればよいです。

powershell 自身の問題およびコマンドの実行の遅さが原因なのかなと感じました、対策としては.NETオブジェクトを利用するのが一番良い結果が出ていると思います。

ハッシュの生成

変更前

Write-Output "文字列" | Set-Content hash.tmp
$hash = (certutil -hashfile hash.tmp MD5)[1..1]

(Get-FileHashコマンドがあるけどツッコミは無しで)

変更後

$md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$utf8 = new-object -TypeName System.Text.UT8Encoding

for ...
   $hash = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes("文字列")))
   $hash = $hash.Replace("-", "").ToLower()

ファイル書き込み

変更前

Write-Output "文字列" | Add-Content hash.log -Encoding Unicode

変更後

$file = New-Object System.IO.StreamWriter("hash.log", $false, [System.Text.Encoding]::GetEncoding("unicode"))

for ...
   $file.WriteLine("文字列")

$file.Close()

参考

モバイルバージョンを終了