Code Optimierung

24/09/2009 - 10:02 von Stefan Ruppel | Report spam
Hallo,
hat jemand eine Vorstellung von folgendem Problem oder kann mir sagen wo ich
etwas dazu nachlesen kann:

Ich habe eine Funktion entwickelt mit der man die Basel II Risikogewichte
berechnen kann (das ist etwas, was man in einer Bank braucht um Risiken zu
bewerten - Details dazu siehe Kreditwesengesetz und Baseler Ausschuß).

Die Funktion benötigt dazu ca 20 Variablen die jetzt bei jedem Aufruf per
Dim angelegt werden. Das wird dann ziemlich aufwendig, wenn die Funktion
mehrere 10.000 mal aufgerufen wird.
Frage was ist grundsàtzlich schneller:
- Neuanlage der einzelnen Variablen bei Funktionsaufruf oder
- Globale Anlage der Variablen bei Aufruf der Applikation und Neubelegung
der Variablen (das muß natürlich geschehen, weil man sonst in den Ergebnissen
z.T. noch den vorigen Lauf mit drinnen hat) bei jedem Funktionsaufruf

Die grundsàtzliche Frage lautet eigentlich was ist schneller: Die Anlage
einer Variablen oder die Belegung mit einem Wert.

Die DB's mit denen ich hier arbeite (in einer Bank - klar) sind rel. groß
und ich muß ohnehin aufpassen, daß ich nicht an der 2 GB Grenze scheitere,
daher wàre jede weitere Beschleunigung im Algorithmus schon gut (nur
testweise möchte ich das nicht einfach implementieren).

Merci für Euere Hilfe
Stefan Ruppel
 

Lesen sie die antworten

#1 Thomas Winkler
24/09/2009 - 10:40 | Warnen spam
Hi,

Die Funktion benötigt dazu ca 20 Variablen die jetzt bei jedem Aufruf per
Dim angelegt werden. Das wird dann ziemlich aufwendig, wenn die Funktion
mehrere 10.000 mal aufgerufen wird.
Frage was ist grundsàtzlich schneller:
- Neuanlage der einzelnen Variablen bei Funktionsaufruf oder
- Globale Anlage der Variablen bei Aufruf der Applikation und Neubelegung
der Variablen (das muß natürlich geschehen, weil man sonst in den Ergebnissen
z.T. noch den vorigen Lauf mit drinnen hat) bei jedem Funktionsaufruf

Die grundsàtzliche Frage lautet eigentlich was ist schneller: Die Anlage
einer Variablen oder die Belegung mit einem Wert.



IMHO sollte das keinen spürbaren Performance-Unterschied machen. Denn
die Prozessorzeit der Neuzuweisung/Neuanlage wird nur einen Bruchteil
der Gesamtlaufzeit pro Aufruf ausmachen. Vielleicht kann noch jemand mit
fundierten Details aufwarten.

Viel wichtiger finde ich allerdings die Sauberkeit und Wartbarkeit des
Codes in solch großen Projekten (ich habe sowohl Banken- als auch
"Optimierungs-" erfahrung :-) und die Optimierung des Datenmodells.

Kurz: Für eine 5%-Verbesserung würde ich keine Code-Vergewaltigung (und
das ist es ja was Du vor hast) in Kauf nehmen.

Die DB's mit denen ich hier arbeite (in einer Bank - klar) sind rel. groß
und ich muß ohnehin aufpassen, daß ich nicht an der 2 GB Grenze scheitere,
daher wàre jede weitere Beschleunigung im Algorithmus schon gut (nur
testweise möchte ich das nicht einfach implementieren).



Zeig doch mal den Code her und erklàre von wo aus und wie er aufgerufen
wird. Oft liegen schon in der Implementierung der Algorithmen enorme
Schwàchen/PerformanceOptimierungsPotential. Einfaches Beispiel: Chr()
vs. Chr$().

Meine Schàtzung: Wenn Du den code "normal" geschrieben hast (also ohne
Performance-Tuning) sollten wir hier schon 20% bis 30% Laufzeit
einsparen können.

Thomas

"Access? Damit arbeite ich nicht. Das ist doch nur ein abgespecktes Excel."

Ähnliche fragen