[英]Is there any performance gain by declaring an object outside the loop
我有一个代码,我在循环中声明一个对象,如:
foreach(...)
{
ClassA clA = new ClassA();
clA.item1=1;
clA.item2=2;
ClassB.Add(clA);
}
如果我按如下方式修改代码,是否会有任何性能提升:
ClassA clA;
foreach(...)
{
clA = new ClassA();
clA.item1=1;
clA.item2=2;
ClassB.Add(clA);
}
提前致谢。
这样没有性能提升。 它只会帮助变量超出范围,而不是更快。
编译器会自动优化代码,无论如何都要在循环外部移动声明,因此这样做没有任何好处。
例如
while(...){
int i = 5;
...
}
将编译器优化为此优化
int i;
while(...){
i = 5;
...
}
实际的对象分配发生在clA = new ClassA();
所以,除非你能将它移出循环,否则你将无法获得任何性能提升。
正如大家所说,并非如此,但我仍然会将您的代码更改为:
foreach(...)
{
ClassB.Add(new ClassA() { item1=1, item2=2 });
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.