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

わんくま同盟

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

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


■83331 / )  Re[26]: 大量のテキストファイルをマルチスレッドで高速に読み込む方法
□投稿者/ むー (1回)-(2017/03/17(Fri) 12:14:07)
No83327 (金尾 さん) に返信
> 方法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)


これらは同じではありませんよね
方法2はロックオブジェクトを共有していないので
排他がされていませんよ、複数のファイルが並行で読み取られてます

なので
・SSDは並行で読み取ったら速くなる
・HDDは並行で読み取ったら遅くなる
ということだと思います

返信 編集キー/


管理者用

- Child Tree -