Hallo Community
Ich muss eine ellenlange Berechnung machen die ungefähr 5 - 10 sec dauert. Damit das schneller durchgerechnet wird verwende ich jetzt eine
Ich hab hier mal ein synonymes Beispiel zusammengebastelt für die Berechnung einer Null-Stelle. Ich weiss ich könnte auch mathematische Werkzeuge wie Newton etc dafür verwenden, möchte aber mein eigentliches Berechnungsproblem mit der Parallel.For gelöst haben.
Spoiler anzeigen
Sobald die Berechnung
Wie kann ich das beheben?
Danke für die Hilfe
exc-jdbi
Ich muss eine ellenlange Berechnung machen die ungefähr 5 - 10 sec dauert. Damit das schneller durchgerechnet wird verwende ich jetzt eine
Parallel.For
.Ich hab hier mal ein synonymes Beispiel zusammengebastelt für die Berechnung einer Null-Stelle. Ich weiss ich könnte auch mathematische Werkzeuge wie Newton etc dafür verwenden, möchte aber mein eigentliches Berechnungsproblem mit der Parallel.For gelöst haben.
VB.NET-Quellcode
- Option Strict On
- Option Explicit On
- Imports System.Threading.Tasks
- Public Module Module1
- Public Sub Main()
- Dim _min = -2, _max = 2
- Dim root = FindRoot(_min, _max, 100000)
- End Sub
- Function FindRoot(min As Int32, max As Int32, scale As Int32) As Double
- Dim _abbort = False
- Dim result As Double = 0
- Dim cnt = scale * (max - min)
- Parallel.For(1, cnt,
- Sub(i, state)
- Dim y = CalcFunc(min + i / scale, _abbort)
- If y <= 0 Then
- state.Stop()
- result = min + i / scale
- End If
- End Sub)
- Return result
- End Function
- Function CalcFunc(x As Double, ByRef _abbort As Boolean) As Double
- If _abbort Then Return 0
- Return 1 + 1 / (2 * x) + 1 / (3 * x) + 1 / (4 * x) + 1 / (5 * x)
- End Function
- End Module
Sobald die Berechnung
y <= 0
liefert, soll komplett abgebrochen werden. Das macht das Programm auch, nur irgendwie werden da weitere Berechnungen gemacht die noch in der Pipeline sitzen, denn schlussendlich ist das Resultat bei mir immer result = -1
.Wie kann ich das beheben?
Danke für die Hilfe
exc-jdbi