Hallo Krisztian,
Da VBA "inprocess" läuft, hast du in gewissen Bereichen einen eindeutigen Geschwindigkeitsvorteil gegenüber allen anderen Sprachen, da diese "out of process" ablaufen.
Mach mal eine Schleife und erzeuge 1000 Punkte, oder lies alle Parameter einer größeren Baugruppe ein. Das ist nicht nur Faktor 4...
Ich erklär dass immer so:
Denk dir, CATIA ist ein Schuhkarton.
Bei VBA sitzt du schon in der Kiste drin und werkelst einfach drauf los, bei allen anderen Sprachen musst du jedesmal die Kiste öffnen, Befehl ausführen, Kiste schließen, öffnen, ausführen, schließen,...
Das kostet eben Zeit!
Ich hab die Erfahrung gemacht, dass eine 1zu1 Portierung in der Performance immer schlechter abschneidet. VBA ist hier einfach weniger empfindlich und lässt auch "ineffizienten" Code noch gut aussehen.
Es lässt sich bestimmt nicht alles optimieren, aber wenn du darauf achtest, die Kiste möglichst wenig auf und zu zu machen, dann geht da meist schon noch was. Also Zugriffe auf CATIA minimieren und mit internen Variablen arbeiten.
Extrem-Bsp:
VBA : 20 sek
.NET (1zu1) : >1 Min
.NET optimiert : 5 sek
Um die Laufzeit zu optimieren, habe ich auch schon mal "zugriffsintensive" Teile als VBA-Projekt ausgelagert und von .NET aus aufgerufen.
Gruß
CAMiCADse
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP