【发布时间】:2010-01-01 20:03:28
【问题描述】:
如果我有这样的代码
for(int i=0;i<10;i++)
{
int iTemp;
iTemp = i;
//.........
}
编译器是否将 iTemp 实例化 10 次?
还是优化一下?
我的意思是如果我将循环重写为
int iTemp;
for(int i=0;i<10;i++)
{
iTemp = i;
//.........
}
会更快吗?
【问题讨论】:
-
ints 不是对象,因此创建它们可能是一两条指令。也许一个对象会是一个更好的例子。 -
我喜欢第二种方法。为什么你首先需要这个额外的变量?另外,请在 for 循环中添加一些空格!
-
最后,比较生成的 IL 和 PROFILE 总是一个好主意!
-
@mmyers:
ints 绝对是 C# 中的对象。 -
注意不要混淆您所说的实施级别。从 C# 语言的角度来看,int 是对象。从虚拟执行系统的角度来看,int 是包含 32 位的桶,对象是垃圾收集堆中的托管地址。
标签: c# optimization compiler-construction