PR

メモ書き Windowsでファイルを沢山作りたい

ただのメモ書きです。
転送速度を見るため大量のファイル欲しいなーって時に即席で作りたいと思いつつ、fsutilが思い出せなかったり、for分を区切るのは「,」と「;」のどちらか思い出せないときのためのメモです。
当たり前ですが悪用厳禁です。

以下は1KBのファイルを20個作成しています。

fsutil file createnew "test_1" 1024

for($count=2;$count -le 20;$count++){

    Copy-Item "test_1" "test_$count"

}

Windows11やWindowsServer2025からアウトバウンドのSMB署名必須になったからどの程度影響あるか調べないとなー。

SMB 署名動作の制御
Windows 11 の第三者サーバーおよび Windows サーバーで SMB 署名を無効にする方法。

100万ファイルぐらいrobocopyすれば性能影響出てくれるのかな。

ここで少し気になったけど、ファイルを大量に作成する際に1個だけ作成してあとはコピーと、全てfsutilで作成するのとではどの程度性能差があるんだろう。
まー当たり前だけどコピーのほうが早いと思うんだけどね。

まずはコピー方式です。

$before=Get-Date

for($count=1;$count -le 200;$count++){

    fsutil file createnew "test_$count" 1024 > $null

}
$after=Get-Date

($after-$before).TotalMilliseconds

上記のコードを実行すると562.8966ミリ秒でした。


次に1個ずつ手作りです。

$before=Get-Date

for($count=1;$count -le 200;$count++){

    fsutil file createnew "test_$count" 1024 > $null

}
$after=Get-Date

($after-$before).TotalMilliseconds

上記のコードを実行すると6044.3684ミリ秒でした。
ちなみに標準出力させた場合(> $nullを削除)は6310.2778ミリ秒でした。

本当は数十~百回ぐらい自動で実行させて平均値取ったほうが良いと思うけど、流石にファイル作成の性能はそう使われることはないだろうなー。

SMB通信で署名あり、なし、暗号化あり、なしの組み合わせだったらやる意味はありそうだけど、WindowsServerは大抵ActiveDirectoryの管理下になっているだろうし、最低3台のEC2を構築しないといけないのか。
まー、性能差がどの程度あるかだけならNTLMでも良いかな。
流石に仕事でやる必要が出たら構築するけど。

次書くとしたら良く忘れるWhere~、Select~とか書いておきたいな。

コメント

タイトルとURLをコピーしました