所以我编写了一个字符串搜索功能,结果是4,因为他们需要前进或后退,或者包容性或排他性。然后我需要更多的功能,比如忽略某些特定的东西,等等等等。我认为使用可选的布尔参数制作一个稍微大一点的函数比维护原本需要的8+函数更容易。
由于这是主要的主力功能,但性能很重要所以我设计了一个简单的测试,以了解我会因此而失去多少。代码如下:
main window:
Private Sub testbutton_Click(sender As Object, e As RoutedEventArgs) Handles testbutton.Click
Dim rand As New Random
Dim ret As Integer
Dim count As Integer = 100000000
Dim t As Integer = Environment.TickCount
For i = 0 To count
ret = superfunction(rand.Next, False)
Next
t = Environment.TickCount - t
Dim t2 As Integer = Environment.TickCount
For i = 0 To count
ret = simplefunctionNeg(rand.Next)
Next
t2 = Environment.TickCount - t2
MsgBox(t & " " & t2)
End Sub
The functions:
Public Module testoptionality
Public Function superfunction(a As Integer, Optional b As Boolean = False) As Integer
If b Then
Return a
Else
Return -a
End If
End Function
Public Function simpleFunctionPos(a As Integer)
Return a
End Function
Public Function simplefunctionNeg(a As Integer)
Return -a
End Function
End Module
所以非常简单。奇怪的是,超级函数的速度始终比任何一个简单函数快两倍(我的测试结果是" 1076 2122")。这没有任何意义..我试着寻找我可能做错了但我无法看到它。有人可以解释一下吗?
答案 0 :(得分:0)
您没有为简单功能设置返回类型。所以他们返回对象类型
因此,当您使用simpleFunctionNeg
函数应用程序时,在返回值时将Integer
转换为Object
类型,然后在将返回值分配给变量时从Object
返回Integer
将返回值设置为Integer
simpleFunctionNeg
后的出价略高于superfunction