Schneller ohne Sprungmarke?
25.05.2021 15:00:24
Dieter
für eine Optimierungsaufgabe habe ich eine Prozedur geschrieben, die im Prizip zu funktionieren scheint.
Hier der auf das Wesentliche reduzierte Ausschnitt aus der wesentlich umfangreicheren Prozedur:
Sub OptLoop()
'declarations
'different limits for different I, currently best settings
Dim VarLimits(30), BestSet(30) As Integer
'loop variables, variables for optimization
Dim I, J, NewMax, OldMax As Integer
'variables and constants
'read values for array VarLimits from worksheet
RestartLoop:
'initialize
For I = 1 To 30
BestSet(I) = 0
Next I
OldMax = 0
NewMax = 0
For I = 1 To 30
For J = 1 To VarLimits(I)
'send current I and J to worksheet
'calculate worksheet using I and J to get NewMax
If NewMax > OldMax Then
GoTo RestartLoop
End If
'keep temporary maximum for next loop
OldMax = NewMax
'keep index J for current I
BestSet(I) = J
Next J
Next I
'send BestSet to worksheet
End Sub
Insgesamt funktioniert das recht gut. Allerdings ist die Applikation zeitkritisch. Daher meine Fragen, ob es eine schnellere Alternative zur Sprungmarke gibt.
Weiterhin werden Sprungmarken immer wieder für "schlechten Programmierstil" gehalten. Bisher habe
ich aber keine zufriedenstellende Begründung dafür gefunden. Meiner Meinung nach muss eine Prozedur
laufen und keine Schönheitspreise gewinnen.
Vorab schon mal vielen Dank für Eure Hilfe
Dieter Krüsemann