2017/03/22(Wed) 14:18:07 編集(投稿者)
■No83414 (バカボドン さん) に返信
> 外側のループを減らすために、以下のようにxyまるごと配列にして出力する方法も試してみましたが
> なぜか10倍くらい遅くなってしまいました
改良案
Sub GetBytesAndWriteASync5(ByVal a(,,) As Single, ByVal enc As Encoding, ByVal path As String)
Using stream As New StreamWriter(path, FileMode.Create)
For z As Integer = 0 To a.GetUpperBound(0)
Dim buf(a.GetUpperBound(1)) As StringWriter
Dim zz As Integer = z
Parallel.For(0, buf.Length,
Sub(y)
buf(y) = New StringWriter()
For x As Integer = 0 To a.GetUpperBound(2)
buf(y).WriteLine(a(zz, y, x))
Next
End Sub
)
For Each b In buf
stream.Write(b.ToString())
Next b
Next z
End Using
End Sub
追記
For Each b In buf
をTask化すれば、さらに速くなる