我使用声明而不是使用显式std::方式来使用标准库对象.我得到的是否有使用任何性能提升了这个问题使用声明 S,使用声明 S和直接使用的名字从标准库.
例如:
要打印出"Hello world",我们可以写出以下方法:
通过使用裸露的std::方式:
std::cout << "Hello world";
通过使用声明:
using std::cout; cout << "Hello world";
通过使用声明:
using namespace std; cout << "Hello world";
那么,上述哪种方法具有最佳性能?更有效率?
所有这三种方法都会产生相同的运行时代码,从而产生性能.(通过切换到装配输出轻松验证,例如g++ -O3 -S test.cpp).
如果你在谈论编译时间,那么这不太可能产生任何可衡量的影响.从理论上讲,完全限定name(::std::cout)可以减少需要检查的潜在符号的数量.但是,磁盘I/O很可能会更加重要.事实上,我在三个变种运行测试编写一个简单的程序100倍:::std::cout,std::cout和using namespace std; cout.即使在没有优化的情况下进行编译(使符号查找尽可能重要)和在快速SSD上进行编译(以最小化磁盘I/O时间),任何差异都低于噪声级别.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |