Vb.net 在循环中调用SQL Server时,哪种代码更有效?
哪种代码更有效Vb.net 在循环中调用SQL Server时,哪种代码更有效?,vb.net,coding-efficiency,Vb.net,Coding Efficiency,哪种代码更有效 Dim drPerson作为数据行 Dim CCL作为新的myClass 对于dtData.Rows中的每个drPerson Dim dsPers作为新数据集 dsPers=cCLS.Get\u PersonByID(drPerson(“person\u id”)) '代码块用于处理dataset对象 下一个 或 Dim drPerson作为数据行 Dim dsPers作为新数据集 Dim CCL作为新的myClass 对于dtData.Rows中的每个drPerson dsP
Dim drPerson作为数据行
Dim CCL作为新的myClass
对于dtData.Rows中的每个drPerson
Dim dsPers作为新数据集
dsPers=cCLS.Get\u PersonByID(drPerson(“person\u id”))
'代码块用于处理dataset对象
下一个
或
Dim drPerson作为数据行
Dim dsPers作为新数据集
Dim CCL作为新的myClass
对于dtData.Rows中的每个drPerson
dsPers=cCLS.Get\u PersonByID(drPerson(“person\u id”))
'代码块用于处理dataset对象
下一个
我更喜欢两者的结合
将CCL作为新的myClass()进行调整
对于每个drPerson,在dtData.Rows中作为DataRow
Dim dsPers=cCLS.Get_PersonByID(drPerson(“person_id”))
'代码块用于处理dataset对象
下一个
没有不必要的数据集构造函数调用
cCLS
是所有迭代中使用的单个实例,因此它在循环之外声明
dsPers
在循环的每次迭代中都是一个新实例,在循环上下文之外没有任何意义,所以在内部声明它。您自己尝试过计时吗?您可以将这些代码片段循环1000000次,看看哪一个完成得更快。我的猜测是不会有足够大的差异。for DataSet显示默认构造函数中有一些代码,因此您的第二个示例可能会稍微快一点,因为该构造函数中的代码不必每次通过循环执行(即,使用作为数据集
而不是作为新数据集
)因为它是多余的。那么,在循环之前还是在循环体内部声明dsPers
,应该根据需要访问它的范围来决定。@Joel有关更多信息,请参阅:您应该使用第一个选项,以便尽可能缩小变量的范围。我相信,在发布版本中,编译器将优化代码,使其最终像第二个一样。这意味着您可以两全其美,也就是说,您只能在需要的地方使用变量,但编译后的应用程序只需创建一次。感谢所有的响应。听起来似乎没有明确的选项,更多的代码偏好。祝您有美好的一天!不要这样太挑剔了,因为我也喜欢这种风格,但我不知道它是否回答了所问的问题。“选项A或选项B更快吗?”回答为“好吧,选项C更快/比两者都好”。即使这是真的,也可能无法理解OP想要什么,否则我们可能会错过选项A和B的不同之处。