在If语句中声明变量是否会提高ASP.Net中的性能?

时间:2013-08-06 10:20:09

标签: asp.net vb.net performance variables if-statement

为了说明目的,我编写了两个函数。你能告诉我哪一个更好练习吗?

Test2是否更适合性能,因为它需要声明更少的变量,因此可能会在系统上使用更少的内存?

Function Test1()

    Dim PerformMethod_A As Boolean = True
    Dim a = 1
    Dim b = 2
    Dim c = 3
    Dim d = 4
    Dim e = 5
    Dim result

    If PerformMethod_A Then
        result = a + b
    Else
        result = c + d + e
    End If

    Return result

End Function

Function Test2()

    Dim PerformMethod_A As Boolean = True
    Dim result

    If PerformMethod_A Then
        Dim a = 1
        Dim b = 2
        result = a + b
    Else
        Dim c = 3
        Dim d = 4
        Dim e = 5
        result = c + d + e
    End If

    Return result

End Function

2 个答案:

答案 0 :(得分:2)

此时您正在执行 micro 性能增强功能。根据您所描述的问题陈述,两种方式都没有明显的区别。如果您在性能方面遇到问题,则需要先收集指标,以便了解要调整的

阅读Eric Lippert的these articles,他们会指导你。

答案 1 :(得分:1)

如果你看一下IL中编译的内容,你会发现它并没有真正有所作为。所有局部变量实际上都在IL的方法顶部声明,无论它们在源中声明的位置。

测试1:

    // Method begins at RVA 0x2054
// Code size 59 (0x3b)
.maxstack 2
.locals init (
    [0] int32 a,
    [1] int32 b,
    [2] int32 c,
    [3] int32 d,
    [4] int32 e,
    [5] bool PerformMethod_A,
    [6] object result,
    [7] object Test1,
    [8] bool VB$CG$t_bool$S0
)

的Test2:

// Method begins at RVA 0x209c
// Code size 58 (0x3a)
.maxstack 2
.locals init (
    [0] bool PerformMethod_A,
    [1] object result,
    [2] object Test2,
    [3] int32 a,
    [4] int32 b,
    [5] int32 c,
    [6] int32 d,
    [7] int32 e,
    [8] bool VB$CG$t_bool$S0
)