11
auto abc = 5566;

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

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

提前致谢。

4

3 回答 3

34

auto比 长一个字符int,所以词法分析器肯定需要做更多的工作。

另一方面,编译器不再需要检查用户是否提供了适当的类型,所以我最好的猜测是这auto会稍微快一些。

最后,您可能不应该基于性能考虑在类型推断和显式类型之间做出决定。意图和清晰度应该是决定因素。

于 2013-11-13T08:49:55.347 回答
3

它可能会,也可能不会,这取决于编译器。当然,这不是标准强制要求的。

由于词法分析器知道5566无论如何的类型,它很可能在很大程度上是不相关的。

您最好不要担心算法和数据结构选择等更多“宏观”问题。与担心自动类型选择是否更快相比,您几乎肯定会获得更好的投资回报。

使用auto创建变量与其说是关于性能,不如说是为了让你作为编码员的生活更轻松。

于 2013-11-13T08:49:11.067 回答
1

与编译时一样,编译器无论如何都必须检查类型,我认为用编译器发现的类型替换 auto 不会花费更多时间。

如果您想了解更多信息:C++ 11 自动编译时间还是运行时?

如果您想知道是否应该使用 auto:C++11 auto 关键字是多少?

于 2013-11-13T08:49:53.103 回答