C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■83327 / )  Re[25]: 大量のテキストファイルをマルチスレッドで高速に読み込む方法
□投稿者/ 金尾 (35回)-(2017/03/17(Fri) 12:01:57)



方法1

Dim bs00(CInt(file_size - 1)) As Byte

For i As Integer = 1 To filenum
Dim fs As New FileStream(StrPath(i), FileMode.Open, FileAccess.Read)
fs.Read(bs00, 0, file_size)
fs.Close()
Next i

方法2

Parallel.For(1, filenum, Sub(i)

Dim bs0(CInt(file_size - 1)) As Byte

Dim fs As New FileStream(StrPath(i), FileMode.Open, FileAccess.Read)
SyncLock fs
fs.Read(bs0, 0, file_size)
End SyncLock
fs.Close()

End Sub)


方法1だと、SSDで410MB/s、HDDで140MB/s
方法2だと、SSDで550MB/s、HDDで110MB/s

という転送速度になるのですが、
理由は分かりますか?

やっていることは同じなのに
なぜかSSDとHDDで方法によってここまで速度差が見られるのはなぜなのでしょうか?





返信 編集キー/


管理者用

- Child Tree -