GetUpperBound vs UBound的速度

时间:2015-04-09 21:35:33

标签: arrays vb.net performance

哪个更快?我试过谷歌搜索,甚至无法找到任何有助于我自己解决这个问题的东西。我得到的最好的就是这个简单的DotNetFiddle:https://dotnetfiddle.net/i6Yx6R

1 个答案:

答案 0 :(得分:1)

UBound只是在内部调用Array.GetUpperBound,因此它们的实现几乎相同:

Public Function UBound(ByVal Array As System.Array, Optional ByVal Rank As Integer = 1) As Integer

        If (Array Is Nothing) Then
            Throw VbMakeException(New ArgumentNullException(GetResourceString(ResID.Argument_InvalidNullValue1, "Array")), vbErrors.OutOfBounds)

        ElseIf (Rank < 1) OrElse (Rank > Array.Rank) Then
            Throw New RankException(GetResourceString(ResID.Argument_InvalidRank1, "Rank"))

        End If

        Return Array.GetUpperBound(Rank - 1)

    End Function

这是从微软的reference source获得的。

两者之间的区别肯定是几乎无法估量的,但我怀疑UBound会因为它首先进行一些边界检查而略微缓慢。

实际上,因为他们的实际实现是相同的,我会使用你更习惯使用风格。