C ++ 11中的auto是否会使编译时间更长?

时间:2013-11-13 08:46:23

标签: c++ performance c++11

auto abc = 5566;

据我所知,编译器在编译时知道abcint,所以它不会影响运行时性能。

但是,它是否会使编译时间更长?

提前致谢。

3 个答案:

答案 0 :(得分:33)

autoint长一个字符,因此词法分析器必须做更多的工作。

另一方面,编译器不再需要检查用户是否提供了合适的类型,因此我最好的猜测是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?