【发布时间】:2023-03-10 08:49:02
【问题描述】:
我有一个巨大的数据表,我需要逐行检查一个特定的值。
IF ELSE 或 SELECT CASE 结构中哪种方法的性能更高? (我专注于为我提供最佳性能的方法)
否则(方法 #1)
For Each vRow In vDTtemp.Rows
If vRow("Item") = "Time" Then
vRow("Result") = "000"
ElseIf vRow("Item") = "DateTime" Then
vRow("Result") = "001"
ElseIf vRow("Item") = "String" Then
vRow("Result") = "002"
Else
vRow("Result") = "N/A"
End If
Next
选择案例(方法 #2)
For Each vRow In vDTtemp.Rows
Select Case vRow("Item")
Case "Time"
vRow("Result") = "000"
Case "DateTime"
vRow("Result") = "001"
Case "String"
vRow("Result") = "002"
Case Else
vRow("Result") = "N/A"
End Select
Next
【问题讨论】:
-
您从实际测试中得到了什么结果?此外,(1) 通过索引而不是名称来引用列可能会更快,并且 (2)
Select Case在发布版本中会进行优化,而在调试版本中未完成。 -
AFAIK 是一样的。在这两种情况下,它都会在找到真实条件后中断。但是,当您必须编写许多 If 语句时,Select Case 是一种更好、更简洁的方式。
-
是的,性能应该差不多,但 Select Case 的可读性更强。
-
@OwerFlov mmmm,我认为 IF 方法 #1 会消耗更多资源。例如,所有数据都有“字符串”值,那么,循环需要考虑时间和日期时间,会花费更长的时间。在方法#2中,选择案例直接转到选项。
-
你可以用秒表自己看(我这里没有很多数据自己测试)如dreamincode.net/forums/topic/…
标签: vb.net performance if-statement switch-statement cycle