2011-08-31 72 views
0

任何人都可以为我阐明一些。 这将是表现更好的哪一个对性能最好

foreach (DataRow row in prodStockLevels.Rows) 
    { 
     string stock = row["stpt_Stock"].ToString(); 
     textbox.text = stock; 
    } 

foreach (DataRow row in prodStockLevels.Rows) 
    { 
     textbox.text = row["stpt_Stock"].ToString(); 
    } 

会不会有太大的差别,即使数据表是巨大的。只是想知道如果数据直接传递,性能是否更好。

回答

4

将会有效率没有明显的差异 - 我怀疑它甚至衡量,如果它在所有存在

你分配给本地变量的事实基本上是无关紧要的。表达式row["stpt_Stock"].ToString()的值将以任何方式在堆栈上结束。唯一的区别是该堆栈槽是否有名称。

在调试器中,它可能会产生一个微小的但可测量的差异,因为它可能会有一些额外的影响 - 但当然不足以担心。

我想我会更担心的是,您将重复赋值给同一textBox.Text属性 - 只有最后一个实际上是相关的。你会更好的只是取最后排......

+0

谢谢乔恩,这是伟大的。我只是用文本框作为例子,但是谢谢 –

1

没有什么区别。编译后可能完全相同的代码。

1

没有区别。
下面会比速度更快:

textbox.text = prodStockLevels.Rows.Last()["stpt_Stock"].ToString(); 
+0

_might_比两者都快。优化器可以看到从未使用分配的值并完全跳过分配。并不是说它只是它可以的 –

+0

@Rune:消除属性分配的优化器会弄得一团糟。 Text属性确实触发了一些逻辑和重绘。 –

+0

如果确实存在副作用,那么优化器将无法删除分配,但是这样您的代码将无法工作,因为这正是您刚才所做的优化反正 –