我需要选择一种编写一段代码的方法,这段代码会重复很多,所以我希望它尽可能快。
这是我的代码(目前):
For Cel As Short = 0 To Cels - 1
Rw = Int(Cel / 3) + 1
Col = Cel - ((Rw - 1) * 3) + 1
RifTxt = TabW(RifTW("Pi")).Cells(Cel)
If Col = 1 Then
RowArr(Col) = RifTxt
Else
If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
Else
RowArr(Col) = "0000-00-00"
End If
If Col = 3 Then
RowArr(3) = Rw
Pi_W.Rows.Add (RowArr)
End If
End If
Next Cel
我想知道更改它(使用ElseIf或Select Case)如下所示:
使用ElseIf
For Cel As Short = 0 To Cels - 1
Rw = Int(Cel / 3) + 1
Col = Cel - ((Rw - 1) * 3) + 1
RifTxt = TabW(RifTW("Pi")).Cells(Cel)
If Col = 1 Then
RowArr(Col) = RifTxt
ElseIf Col = 2
If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
Else
RowArr(Col) = "0000-00-00"
End If
ElseIf Col = 3 Then
If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
Else
RowArr(Col) = "0000-00-00"
End If
RowArr(3) = Rw
Pi_W.Rows.Add (RowArr)
End If
Next Cel
或使用Select Case:
For Cel As Short = 0 To Cels - 1
Rw = Int(Cel / 3) + 1
Col = Cel - ((Rw - 1) * 3) + 1
RifTxt = TabW(RifTW("Pi")).Cells(Cel)
Select Case Col
Case is = 1 Then
RowArr(Col) = RifTxt
Case is = 2
If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
Else
RowArr(Col) = "0000-00-00"
End If
Case is = 3 Then
If DateTime.TryParse(RifTxt, culture, Styles, DateResult) Then
RowArr(Col) = DateResult.ToString("yyyy-MM-dd")
Else
RowArr(Col) = "0000-00-00"
End If
RowArr(3) = Rw
Pi_W.Rows.Add (RowArr)
End Select
Next Cel
我试着在.netFiddle上比较三种方法,但我不确定结果。
你能建议我正确的选择吗?
答案 0 :(得分:0)
在这种情况下,您的Select
和If
示例最有可能编译为相同的机器代码,性能完全相同。
在任何情况下:不要担心这样的微优化,除非您已经证明它是代码的问题部分。写一些可读和可维护的东西,首先是。这种或那种表现方式的差异可以忽略不计。
与往常一样,如果你想知道什么表现更好,试试并看看。