2012-02-14 75 views
-5

哪个代码执行速度更快,为什么变量铸造性能比较

((Form)controls.Owner).Text = langfile.ReadString(
     FormName, ((Form)controls.Owner).Name, ((Form)controls.Owner).Text); 

Form form = (Form)controls.Owner; 
form.Text = langfile.ReadString(FormName, form.Name, form.Text); 
+2

你有没有真正尝试过吗? – 2012-02-14 13:25:40

+7

答案是“谁在乎呢?”。第二个更容易阅读,这远远超过了任何微小的性能优势。 – Blorgbeard 2012-02-14 13:28:00

回答

6

第二种形式可能是非常轻微更快(仅一个执行时间检查,而不是三个),但是这几乎肯定会是微不足道的。

然而,第二的可读性很多比第一多更好 - 于是有了第二种形式去,因为这个原因。你的发展的顺序应该是:

  • 写最清洁,最易于维护的代码,你可以
  • 测量代码来看看它执行不够好
  • 如果它不,它轮廓找出其中的时间被消耗
  • 如果分析没有建议在设计的变化(它经常会),然后才把应该你微优化代码分割成更小可读形式
+0

又是怎么回事存储消费的变量? – 2012-02-14 13:29:24

+0

@Ask:没有区别,或者*可能*在堆栈上一个额外的参考。微不足道。 – 2012-02-14 13:30:07

2

你一定要使用第二个版本:

  • 更可读
  • 没有多余的铸造。

There 对于第一个版本没有任何优势。

+0

是否编译器优化莫名其妙冗余铸造? – 2012-02-14 13:31:27

+0

@问我不知道。但是,可读性的好处更重要的是微优化,特别是与UI相关的操作。 – ken2k 2012-02-14 13:41:42

0

Althoug我不是一个编译器专家这是很明显的是,两个表达式将被转换为几乎相同的IL代码,因此性能增益,如果有的话,将是微不足道的。