C++性能:使用声明Vs使用声明Vs直接使用库中的名称

Dee*_*mah 0 c++ performance

我使用声明而不是使用显式std::方式来使用标准库对象.我得到的是否有使用任何性能提升了这个问题使用声明 S,使用声明 S和直接使用的名字从标准库.

例如:

要打印出"Hello world",我们可以写出以下方法:

  • 通过使用裸露的std::方式:

    std::cout << "Hello world";

  • 通过使用声明:

    using std::cout; cout << "Hello world";

  • 通过使用声明:

    using namespace std; cout << "Hello world";

那么,上述哪种方法具有最佳性能?更有效率?

Joe*_*Joe 8

所有这三种方法都会产生相同的运行时代码,从而产生性能.(通过切换到装配输出轻松验证,例如g++ -O3 -S test.cpp).

如果你在谈论编译时间,那么这不太可能产生任何可衡量的影响.从理论上讲,完全限定name(::std::cout)可以减少需要检查的潜在符号的数量.但是,磁盘I/O很可能会更加重要.事实上,我在三个变种运行测试编写一个简单的程序100倍:::std::cout,std::coutusing namespace std; cout.即使在没有优化的情况下进行编译(使符号查找尽可能重要)和在快速SSD上进行编译(以最小化磁盘I/O时间),任何差异都低于噪声级别.

  • 如果你在`std :: cout`与`:: std :: cout`不同的系统上 - 逃跑! (5认同)