Warum eine über die andere: UBound oder Länge
Könnte es eine bestimmten Grund, warum man wählen kann UBound
über Length
?
Hier ist der code und 1-dimension ist, übergeben Sie als zweiten parameter.
For iIndex = 0 To UBound(myList)
If Left(Request.ServerVariables("REMOTE_ADDR"), Len(myList(iIndex))) = saIPList(iIndex) Then
bAuth = True
Exit For
End If
Next
Leistungsverbesserung gegen Length
- Und vergessen Sie nicht
myList.GetUpperBound()
- Ich sehe diese Frage hat sich zu einem berühmten Frage, wie es habe mehr als 10K Ansicht. Es bringt Erinnerungen zurück, wenn ich arbeitete für eine Firma, die mit Visual Basic. Ich weiß nicht einmal daran erinnern, die meisten Visual Basic-code. Die Zeit vergeht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun Sie verschiedene Dinge!
UBound
gibt Ihnen der Letzte index im array, währendLength
Sie können die Länge. Sind das nicht die gleichen, weil in der RegelUBound
wirdLength - 1
.Ubound gibt es vor allem für die Abwärtskompatibilität zu alten code. Ich habe nicht gesehen, nichts sagen, es ist veraltet gerade noch, aber zur gleichen Zeit, erkenne ich es nicht wirklich abgestimmt mit der Art und Weise Sie wurden unter der Sprache, in den letzten Jahren. Das gleiche gilt für die Len() und Links () - Funktionen in diesem code; Sie sind den Weg von der Vergangenheit, nicht der Zukunft. Je früher Sie sich anpassen, desto glücklicher werden Sie sein.
Für was es Wert ist, das argument ist weitgehend irrelevant. Mehr "moderne" Weise zu schreiben, dass der code Aussehen ganz anders. Hier ein Beispiel:
Zip
dass es für mich fügt die benötigte Komplexität für mich. Ich weiß, Sie arbeiten mit dem, was der OP gab Sie zu.bAuth = saIPList.Any(Function(s) s.StartsWith(Request.ServerVariables("REMOTE_ADDR")))
Für performance-Gewinn, ich war auch daran interessiert, welche Funktion hat die beste Leistung.
Es scheint, dass die Länge -1 ist viel schneller als die UBound. Ich erwartete UBound schneller irgendwie.
Nachdem 100.000.000 manchmal scheint es, die Zeit für die Länge -1 952ms und UBound: 5844ms.
(Länge -1) ist ~6 mal schneller als UBound
Code zum testen verwendet
Versucht, verschiedene Dinge, die zu beseitigen möglich optimalisations der compiler, alle mit dem gleichen Ergebnis wie oben.
Es ist übernommen aus früheren VB-Tagen. UBound kann Ihnen den höchsten index einer einzigen dimension in einem multidimensionalen array. Länge gibt Ihnen nur die Gesamtzahl der Elemente.
Wenn Sie erklären:
Die Werte sind:
Interessante UBounds ist etwas schneller sein, in diesem Beispiel