Warum einer über den anderen: UBound oder Länge

8

Könnte es einen bestimmten Grund geben, warum man UBound über Length wählen kann?

Hier ist der Code und 1-Dimension wird als zweiter Parameter übergeben.

%Vor%

Jeder Leistungsgewinn gegen Length

    
Tarik 01.09.2011, 20:21
quelle

5 Antworten

12

Sie machen verschiedene Dinge! UBound gibt Ihnen den letzten Index im Array, während Length Ihnen die Länge gibt. Das sind nicht die gleichen, denn normalerweise wird UBound Length - 1 sein.

    
R. Martinho Fernandes 01.09.2011, 20:25
quelle
4

Ubound besteht hauptsächlich aus Abwärtskompatibilität zu altem Code. Ich habe noch nie etwas gesehen, das sagt, dass es veraltet ist, aber gleichzeitig erkenne ich, dass es nicht wirklich mit der Art übereinstimmt, wie sie die Sprache in den letzten Jahren genommen haben. Dasselbe gilt für die Funktionen Len () und Left () in diesem Code. Sie sind der Weg der Vergangenheit, nicht der Zukunft. Je früher Sie sich anpassen, desto glücklicher werden Sie sein.

Für das, was es wert ist, ist das Argument weitgehend strittig. Mehr "moderne" Möglichkeiten, diesen Code zu schreiben, sehen ganz anders aus . Hier ist ein Beispiel:

%Vor%     
Joel Coehoorn 01.09.2011 20:26
quelle
3

Für Performancegewinn war ich auch daran interessiert, welche Funktion die beste Performance hat.

Es scheint, dass die Länge -1 viel schneller ist als das UBound. Ich habe erwartet, dass UBound irgendwie schneller ist.

Nach 100.000.000 Zeiten scheint die Zeit für Länge -1 952ms und für UBound: 5844ms zu sein.

(Länge -1) ist ~ 6 mal schneller als UBound

Code zum Testen verwendet

%Vor%

Versuchte verschiedene Dinge, um mögliche Optimierungen des Compilers zu eliminieren, alles mit dem gleichen Ergebnis wie oben beschrieben.

    
Niels Kool 26.11.2014 00:56
quelle
2

Es wurde von früheren VB-Tagen übernommen. UBound kann Ihnen den höchsten Index einer einzelnen Dimension in einem mehrdimensionalen Array geben. Länge gibt nur die Gesamtzahl der Elemente an.

Wenn Sie Folgendes angeben:

%Vor%

Die Werte sind:

%Vor%     
Hand-E-Food 02.09.2011 00:33
quelle
0

Interessante UBounds sind in diesem Beispiel ziemlich viel schneller

%Vor%     
jhersey29 05.03.2015 21:14
quelle

Tags und Links