@ RodFromGermany: So geht's nun. Danke.
Da magst du recht haben.
Allerdings wird nicht parrallel auf die Platte geschrieben. Zurzeit erstellt der Thread eine Datei, wenn alles fertig gerechnet ist. Nur der Thread (nicht die GUI) greift auf die Platte zu. Ich werde mal schauen, was wie lange dauert.
Aber es ist mir immer noch schleierhaft warum das Berechnen und Schreiben aus dem GUI-Thread 2 min und in einem anderen Thread 8 min dauert. Es dürfte doch eigentlich egal sein.
VB.NET-Quellcode
- Private Sub MultiplyMatricesParallel2(ByVal matA As Double(,), ByVal matB As Double(,), ByVal result As Double(,))
- Dim matARows As Integer = matA.GetLength(0)
- ' A basic matrix multiplication.
- ' Parallelize the outer loop to partition the source array by rows.
- Parallel.For(0, matARows, Sub(i)
- MultMatrix(i, matA, matB, result)
- End Sub)
- End Sub
- Sub MultMatrix(ByVal i As Integer, ByVal matA As Double(,), ByVal matB As Double(,), ByVal result As Double(,))
- Dim matACols As Integer = matA.GetLength(1)
- Dim matBCols As Integer = matB.GetLength(1)
- For j As Integer = 0 To matBCols - 1
- ' Use a temporary to improve parallel performance.
- Dim temp As Double = 0
- For k As Integer = 0 To matACols - 1
- temp += matA(i, k) * matB(k, j)
- Next
- result(i, j) += temp
- Next
- End Sub
ErfinderDesRades schrieb:
Das ist Unfug.
Ich denke, herausgearbeitet ist inzwischen, dasses nicht der Gui-Zugriff ist, der laggt, sondern dass iwelche Daten auf Platte geschrieben werden.
In deim gezeigten Code finden aber überhaupt keine Schreibzugriffe statt - wie gesagt: du suchst an der falschen Stelle.
Da magst du recht haben.
Allerdings wird nicht parrallel auf die Platte geschrieben. Zurzeit erstellt der Thread eine Datei, wenn alles fertig gerechnet ist. Nur der Thread (nicht die GUI) greift auf die Platte zu. Ich werde mal schauen, was wie lange dauert.
Aber es ist mir immer noch schleierhaft warum das Berechnen und Schreiben aus dem GUI-Thread 2 min und in einem anderen Thread 8 min dauert. Es dürfte doch eigentlich egal sein.