尽量提高效率...我想知道何时或是否在VB.NET中实际分配了一个失败的IF / THEN块中的变量。
这是语句块
IF MyCondition then
dim myVariable as String
myVariable = "FOO"
end if
如果MyCondition失败,那么在调用过程/函数时,实际分配的变量是什么?我知道它不会被设置为" FOO"但无论如何分配内存?我知道在这种情况下,影响是微不足道的,但它可能是非常大的物体。如果没有必要,我试图阻止分配非常大的资源。 感谢
答案 0 :(得分:1)
如果未执行if块,则不会有任何内存分配。由于永远不会创建资源(或表示它的对象),因此无需将其放在堆上。您可以使用Visual Studio附带的性能分析工具轻松地对此进行测试。写一个小测试程序,如下所示:
Private Sub Execute()
If allocateResource Then
Dim resource As List(Of String)
resource = Me.AllocateHugeResource
End If
End Sub
Private Function AllocateHugeResource() As List(Of String)
Dim ret As New List(Of String)
For i As Integer = 0 To 100000
ret.Add("Large string for tests")
Next
Return ret
End Function
您可以按照上面的说明启动块的分析过程。您可以将allocateResource更改为true或注释资源声明和AllocateHugeResource()并比较结果。