Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在循环中调用SQL Server时,哪种代码更有效?_Vb.net_Coding Efficiency - Fatal编程技术网

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的不同之处。