| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Exe aus VB6 deutlich langsamer als VBA? (2380 mal gelesen)
|
schrema Mitglied Umweltingenieur
Beiträge: 12 Registriert: 21.02.2006
|
erstellt am: 23. Feb. 2006 13:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, miteinander, ich habe einen recht umfangreichen Code mit vielen Zeichnungsaktionen von VBA in VB konvertiert und daraus eine exe erstellt. Wenn ich diese exe nun unter AutoCAD ablaufen lasse, dauert dies deutlich länger als das Makro aus der dvb. Ist dies ein unvermeidliches Problem bei umfangreicheren Programmen oder gibt es irgendeinen Trick, der exe auf die Sprünge zu verhelfen. Vielen Dank. MfG Marco Schreiter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 23. Feb. 2006 23:13 <-- editieren / zitieren --> Unities abgeben: Nur für schrema
Hallo Macro, ich habe dir meine Tests nochmal zusammengestellt. in der DVB gibt es eine Sub Main im Modul1. Die Startet die VBA Variante. Im Modul2 der Start für die DLL Variante. Wenn du die DLL ohne Compiler nutzen willst, musst du sie mit "REGSVR32 TestDll" auf der Commandozeile registieren. Das Progi macht ca. 10000 Punkte in AutoCAD VBA mit Deklaration als ACADTYP (early bindung) 2 sec. VBA mit Deklaration als OBJECT(late bindung) 3 sec. VB6 als Exe 88 sec. VB6 Dll aus VBA aufgrufen mit late Binding 2 sec. Ich glaube die DLL Methode ist die beste wenn der Code nicht einsehbar sein soll. Stelli [hatte den Anhang vergessen] ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de [Diese Nachricht wurde von Stelli1 am 23. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schrema Mitglied Umweltingenieur
Beiträge: 12 Registriert: 21.02.2006
|
erstellt am: 24. Feb. 2006 10:24 <-- editieren / zitieren --> Unities abgeben:
|
yamaha Mitglied Konstrukteur
Beiträge: 374 Registriert: 19.05.2004 Autocad/Inventor 2017, Windows 7 Pro 64Bit
|
erstellt am: 04. Apr. 2006 00:46 <-- editieren / zitieren --> Unities abgeben: Nur für schrema
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 11. Apr. 2006 14:08 <-- editieren / zitieren --> Unities abgeben: Nur für schrema
Zitat: Original erstellt von Stelli1: VB6 als Exe 88 sec. VB6 Dll aus VBA aufgrufen mit late Binding 2 sec.
ist ja auch logisch. Die DLL wird ja aus Autocad heraus gestartet, und läuft demnach im Thread von Autocad. Hier kann die DLL direkt mit Autocad reden. Die EXE läuft ja als eigener Thread und holt sich über die Microsoft COM Schnittstelle eine Instanz vom Autocadobjekt. Hier ist immer das Betriebssystem involviert. Ausserdem hat die EXE-Version noch einen großen Nachteil : wenn 2 Autocadsitzungen laufen, holt sie sich immer die zuletzt gestatete Sitzung. Bei der DLL-Version übergibst du ja der DLL die gewünschte Sitzung. Etwas Laienhaft erklärt, aber so in etwas läufts ab. ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
giman Mitglied Konstrukteur, Rohrleitungsbau und Rentner
Beiträge: 217 Registriert: 19.06.2005
|
erstellt am: 12. Jan. 2007 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für schrema
@Stelli1, @fuchsi Prima Tips. Kommen für mich genau richtig. Hatte selbst mal daran gedacht DLL's zu erstellen, um den Programmkode nicht einsehbar zu gestalten. Eure Hinweise nennen dazu noch den Vorteil der hohen Verarbeitungsgeschwindigkeit. Auch vom mir je 10 Unitis und ein gutes Jahr 2007 giman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |