使用'var'对C#编译器的性能有多大影响?

时间:2010-02-18 10:24:33

标签: c# compiler-construction var

我发现var关键字极大地有助于降低C#代码中的噪音,几乎不会损失可读性;我会说我现在只在编译器强迫我使用时才使用显式输入。

我知道using var does not change the runtime characteristics of my code。但问题刚刚发生在我身上:我是否在编译时为编译器正在代表我做的所有额外工作付出了巨大的代价?

有没有人做过任何基准测试,看看var广泛使用编译时间有多大差异?

4 个答案:

答案 0 :(得分:20)

我的建议:尝试两种方式。测量结果。那你就知道了。

我没有做任何基准,即使我有,也不会为你回答这个问题。我们不知道你有什么硬件,你的机器上还有什么,一个典型的程序是什么样的。我们也不知道您认为可接受或不可接受的表现。你是唯一知道这一切的人,所以你是唯一能回答这个问题的人。

答案 1 :(得分:16)

无论如何都需要检查类型,这甚至可以节省时间......好吧,不太可能:) 你不应该在意 - 如果您的开发环境很慢,请购买更多内存或新计算机。不要改变编写代码的方式。

答案 2 :(得分:3)

正确的答案是“无法衡量”。对于C#编译器在编译时所做的部分(但很长)的传递列表,请看这里:

http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx

然后理解类型推断只是该列表上单个传递的一部分。

答案 3 :(得分:1)

无论如何,需要找到右侧的类型来进行类型检查和/或类型转换。将结果分配给变量的类型很便宜。大多数成本(如果有的话)都是必须要做的,以便在声明所有局部变量之前允许对表达式进行求值,但即使你不使用var也要为此付出代价。 (顺便说一句,上述约束可能甚至可能不会损害性能。)