小编Mod*_*r71的帖子

更快地在循环内或循环外声明变量?

在循环内或循环外声明变量是否更快?例如:

' Declaration inside of the loop
For each item in items
    Dim newVariable as String = GetAString()
Next

' Declaration outside of the loop
Dim newVariable as String = String.Empty
For each item in items
    newVariable = GetAString()
Next
Run Code Online (Sandbox Code Playgroud)

哪一个更快?为什么?我假设后者更快,因为它只是重复使用相同的"指针"来引用幕后的新值而不是每次迭代创建一个新指针,对吗?有人可以详细说明吗?

谢谢

更新:

编译器足够智能,可以在生成中间语言时优化代码.它将变量声明移动到方法的顶部.下面是编译后IL中的声明:

 .locals init ([0] string newVariable2,
           [1] int32 i,
           [2] string newVariable,
           [3] int32 V_3,
           [4] int32 VB$CG$t_i4$S0)
Run Code Online (Sandbox Code Playgroud)

对于那些感兴趣的人来说,这是整个IL:

.method private instance void  Form1_Load(object sender,
                                          class [mscorlib]System.EventArgs e) cil managed
{
  // Code size       55 (0x37)
  .maxstack …
Run Code Online (Sandbox Code Playgroud)

.net variables optimization loops declaration

8
推荐指数
1
解决办法
4292
查看次数

什么是数据规范化?

可能重复:
数据库规范化究竟做了什么?

有人可以澄清数据规范化吗?有什么不同的水平?什么时候应该"去标准化"?我可以过度正常化吗?我有一张包含数百万条记录的表格,我相信我过度规范了它,但我不确定.

database database-normalization

6
推荐指数
1
解决办法
523
查看次数

如何删除指针指针?

在C++中,如果将指针传递给方法指针,是否首先删除引用的指针?你需要在方法中清理它吗?我正在检查任务管理器中的内存,它正在泄漏!

谢谢!!

c++

4
推荐指数
1
解决办法
1494
查看次数

视图可以返回多个结果集吗?

我想有一个视图,我可以运行返回多个结果集.这可能吗?

如果视图无法执行此操作,那么SQL Server中是否有另一个具有高可见性/透明度的对象可以实现此目的?(我喜欢使用视图,因为我可以很容易地看到它并在Views文件夹下运行它).存储过程并不是很理想,因为我有这么多.

谢谢

sql sql-server sql-view

2
推荐指数
1
解决办法
2245
查看次数