いつも使っているネットワーク環境で、共有ファイルの読み書きが遅いと感じる日があります。
ファイルの移動コマンドの時間を計測して速度を確認する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/秒
コメント