我在c#中注意到,使用var可以提高性能,尤其是在声明特定类的变量时。我做了多个基准测试,每次都得到相同的结果。我也在该网站和其他网站上阅读了类似的问题。但实际上没有人对此发表评论。 任何人都可以确认或反驳。 我有一个 图像数据类,clsImageData 和收集clsImageDataCollection。 集合类中的一个函数是SetCaseLowerCase()。 代码是
private void SetCaseLowerCase()
{
foreach (var item in this)
{
item.DestinationImageName = item.DestinationImageName.ToLower();
}
}
现在,如果我使用clsImageData而不是var,它的执行速度会变慢,我已经进行了100000次迭代检查。但是结果总是一样的。也有其他例子。 谢谢
已编辑 我已经测试了这个简单的代码,使用var的性能提高了7/10倍。请告诉我我在做什么错,我使用的是VS 2017,任何CPU的调试模式,我的处理器是四核。谢谢
sw.Start();
for (int i = 0; i < 10000000; i++)
{
var xyz = "test";
}
StopClock(sw, "Example var - ");
sw.Start();
for(int i = 0; i<10000000; i++)
{
string xyx2 = "test";
}
StopClock(sw, "Example type - ");
答案 0 :(得分:1)
var
是以某种方式编译的,使得使用它等于声明变量/类型(除非以其他方式无法完成,而是使用var
例如:匿名类型) 。这意味着根本没有性能变化。在https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/var
这是一个演示,键入以下代码:
var list = new List<int>();
请注意,当您将鼠标悬停在list
上方时,IDE会显示:
(local variable) List<int> list
这样做的原因是var
被转换为声明的类型,这意味着var实际上是装饰性的,并且其使用不会影响任何性能。