auto abc = 5566;
据我所知,编译器在编译时知道abc
是int
,所以它不会影响运行时性能。
但是,它是否会使编译时间更长?
提前致谢。
答案 0 :(得分:33)
auto
比int
长一个字符,因此词法分析器必须做更多的工作。
另一方面,编译器不再需要检查用户是否提供了合适的类型,因此我最好的猜测是auto
会稍快一些。
最后,您可能不应根据性能考虑在类型推断和显式类型之间做出决定。意图和清晰度应该是决定因素。
答案 1 :(得分:3)
它可能,也可能不是,它取决于编译器。当然,这不是标准要求的表现。
由于词法分析器无论如何都知道5566
的类型,它可能在很大程度上无关紧要。
你最好担心更多的“宏观”问题,如算法和数据结构选择。你几乎肯定会获得更好的投资回报,而不是担心自动类型选择是否更快。
在创建变量时使用auto
并不是关于性能,而是因为它使您的生活变得更加轻松。
答案 2 :(得分:1)
在编译时,编译器必须检查类型,我认为通过编译器找到的类型替换auto不会花费更多的时间。
如果您想了解更多信息:C++ 11 auto compile time or runtime?
如果您想知道是否应该使用auto:How much is too much with C++11 auto keyword?