ダミーファイルを作成しMoveコマンドの時間を計測するPowerShellスクリプト【共有ファイル転送速度ベンチマーク】

powershell コンピュータ
powershell
いつも使っているネットワーク環境で、共有ファイルの読み書きが遅いと感じる日があります。
ファイルの移動コマンドの時間を計測して速度を確認するPowerShellスクリプトを作成してみました。

ソースコード

<#
.SYNOPSIS
ダミーファイルを作成しMoveコマンドの時間を計測するPowerShellスクリプト
<CommonParameters> はサポートしていません

.DESCRIPTION
Copyでは無くMoveにしているのはダミーファイルの削除の手間を減らすためです。

.EXAMPLE
FileMoveBench.ps1 E:\dummy.dat

.PARAMETER $TargetPath
ダミーファイルのパス

.PARAMETER $TargetSize
ダミーファイルのサイズ、単位:Byte
デフォルト:100MB

#>


param (
    $TargetPath = "E:\dummy.dat",
    $TargetSize = 1024*1024*100 # 100MB
)

$DstFile = ".\dummy.dat"
$ErrorActionPreference = "STOP"

fsutil file createnew $TargetPath $TargetSize

$sec = Measure-Command { mv $TargetPath $DstFile } | % { $_.TotalSeconds }
$bps = ($TargetSize / $sec) / (1024 * 1024)

rm $DstFile


Echo "${sec}秒 ${bps}MByte/秒"

参考結果

# Lan上の共有ファイル
14.0616311秒 7.1115505227555MByte/秒

# USB3.0接続の2.5インチ外付けHDD
0.1045375秒 956.594523496353MByte/秒

コメント