VB6 - Gibt es irgendwelche Leistungsvorteile durch die Verwendung von Strings mit fester Breite in VB6?

8

In pre.NET Visual Basic konnte ein Programmierer eine Zeichenfolge mit einer bestimmten Breite deklarieren. Zum Beispiel weiß ich, dass eine Sozialversicherungsnummer (in den USA) immer elf Zeichen umfasst. Also kann ich eine Zeichenfolge deklarieren, die Sozialversicherungsnummern als eine elfstellige Zeichenfolge wie folgt speichert:

%Vor%

Meine Frage ist: Erzeugt dies irgendeine Art von Leistungsvorteil, der entweder den Code schneller laufen lässt oder vielleicht weniger Speicher verbraucht? Würde eine Zeichenfolge mit fester Länge auch anders im Speicher zugewiesen ( d. H. : auf dem Stapel als im Heap)?

    
Daniel Wolfe 27.04.2011, 02:49
quelle

2 Antworten

4

Das einzige Mal in VB6 oder früher, dass ich Zeichenfolgen fester Länge verwenden musste, war die Arbeit mit API-Aufrufen. Das Übergeben einer Zeichenfolge fester Länge würde zu ungeklärten Fehlern führen, wenn die Länge länger als erwartet und manchmal auch kürzer als erwartet ist.

Wenn Sie das in der Anwendung ändern und planen, stellen Sie sicher, dass die Zeichenfolgen nicht an eine API oder externe DLL übergeben werden und dass das Programm keine Felder mit fester Länge ausgeben muss, z. B. mit vielen AS / 400-Importprogramme.

Ich persönlich habe nie einen Leistungsunterschied gesehen, als ich Loops von 300k + Platten lief, aber ich hatte keine andere Wahl, als mit festen Längen zu arbeiten und zu arbeiten, als ich es tat. VB mag es jedoch, standardmäßig undefinierte Längen zu verwenden, daher würde ich mir vorstellen, dass die Leistung für eine feste Länge niedriger wäre.

Versuchen Sie, eine Test-App zu schreiben, um eine grundlegende Verkettung von zwei Strings durchzuführen, und lassen Sie die Funktion 50k-mal durchlaufen. Zeit die Differenz zwischen den zwei von einer undefinierten Länge und die andere festgelegt.

    
DefconRhall 29.04.2011, 02:13
quelle
5

Aktualisieren :

Nein, es gibt keinen Leistungsvorteil; Aber selbst wenn es einen Leistungsvorteil gäbe, ist es eine Mikrooptimierung (es sei denn, Sie haben viele (sagen Millionen) Male in einer Schleife aufgerufen.)

Außerdem belegen Zeichenfolgen mit fester Länge normalerweise mehr Speicher als solche mit variabler Länge, wenn Sie nicht die gesamte Länge verwenden (es sei denn, es handelt sich um kurze Zeichenfolgen mit fester Länge).

Wie immer sollten Sie sorgfältig einen Benchmark erstellen, bevor Sie den Code schwerer pflegen.

Zeichenfolgen mit fester Länge wurden normalerweise bei der Interaktion mit einigen COM-APIs oder bei der Modellierung von Domänenbeschränkungen (wie das Beispiel einer SSN) gefunden.

    
Mitch Wheat 27.04.2011 02:51
quelle

Tags und Links