是否更快地引用文本框的文本属性进行测试或将字符串分配给属性然后测试?

时间:2011-07-15 12:42:03

标签: c# performance

我一直想知道哪个更快(或者它是否有所不同),引用文本框的Text属性或分配给该值的字符串? 参考textbox.Text

if(textbox1.Text == "A")
{ //do a million iterations
}

或者

string aString = textbox1.Text;
if(aString == "A")
{ //do a million iterations
}

3 个答案:

答案 0 :(得分:2)

我使用秒表进行了快速分析:10.000.000次迭代。

在第一种情况下它返回给我:00:00:21.56

在第二种情况下它返回给我:00:00:42.62

在第二种情况下,每次迭代都有Get accessor +指向字符串的新指针,因此速度较慢。

希望这有帮助。

修改

我在迭代中放置任何案例的所有代码。似乎就是这个问题。

答案 1 :(得分:0)

我认为如果打开编译器优化会产生任何影响,但您可以对此进行测试。只需使用StopWatch类重复代码几百万次,即可测量总操作的时间。

答案 2 :(得分:0)

我认为第二种选择更快。读取属性正在执行一个读取文本框值的函数。它有可能被优化掉,另一方面,循环执行时值可能也会有变化,所以每次读取属性时都需要检查它。