Einzelnen Beitrag anzeigen

markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#9

AW: DLL Performance allgemein

  Alt 23. Dez 2018, 20:55
Danke erstmal für die Antworten.

Dem Bernhard will ich natürlich nicht zu nahe treten, zumal er hier offensichtlich viel beiträgt.
Es gibt auch kein wie immer geartetes Problem in VBA. Es geht schlicht und ergreifend um Performance

Die Unterschiede liegen beim konkreten Bereich bei Faktor 2 bis n.
Als fertige Funktion würde InOpArray in Frage kommen. Werde ich testen.

So viel ich aber verstehe müsste ich Richtung Inline Assembler gehen, oder eben fertige Funktionen verwenden, die Assembler verwenden.
Wichtig waren mir hier nur grundsätzliche Erfahrungswerte. Die aber offensichtlich zeigen, dass die Unterschiede in der Regel marginalst sind.
Das Beispiel ist ja nur exemplarisch und keinesfalls von Bedeutung.

Also, ich danke euch für eure Beiträge.
Meine zentrale Frage scheint beantwortet.

Übrigens kann ich aus VBA keine Wide-String Referenz übergeben, da VBA den UTF16 String zu Ansi konvertiert eine Referenz darauf übergeben würde.
Daher übergebe ich einen Pointer auf den String.
Die Übergabe als Ansi-String vermeide ich aber eher, da es dem Performance Gedanken zuwiderläuft. Werde es aber dennoch vergleichen.

LG Markus

Edit:
Zitat:
Die Funktionen macht eine Art StringReplace für WideString. Wenn der Ersetzungstext länger ist als 1 wird abgebrochen usw...
nicht wirklich, es wird im else Zeig behandelt, der nicht angeführt ist.

Zitat:
Man sieht nirgends das Anfordern des Speichers und die Freigabe
Da VBA einen BSTR benötigt, erzeuge ich diesen mit der angeführten Funktion SysReAllocStringLen. Diese fordert den Speicher an.
Die Freigabe erfolgt dann in VBA automatisch.

Geändert von markus888 (23. Dez 2018 um 21:05 Uhr)
  Mit Zitat antworten Zitat