using namespace ...
会增加编译时间或者在某种程度上影响性能吗?我听说它会稍微影响编译时间,但是为什么呢?
using namespace ...
会增加编译时间或者在某种程度上影响性能吗?我听说它会稍微影响编译时间,但是为什么呢?
它会稍微增加编译时间,因为在名称查找期间会考虑更多的位置,但不会有明显的影响。它对运行时性能没有任何影响。
tldr 不影响编译时间和运行时。
严格来说,源代码的每一次更改都会修改编译时间。使用指令、使用语句和各种别名在任何有意义或值得注意的方式下都不会影响编译时间。
至于运行时性能,生成的代码是相同的,因此绝对没有任何性能影响。
总之,请放心,这对程序没有丝毫影响。
auto x = nsa::nsb::nsc::nsd::class_x{};
auto y = nsa::nsb::nsc::nsd::class_y{};
auto z = nsa::nsb::nsc::nsd::class_z{};
对比
using namespace nsa::nsb::nsc::nsd;
auto x = class_x{};
auto y = class_y{};
auto z = class_z{};
nsa
nsa
命名空间中查找nsb
nsb
命名空间中查找nsc
nsc
命名空间中查找nsd
nsd
命名空间中查找class_x
nsa
,在nsa
等中查找nsb
。除了在使用指令期间只查找一次。class_x
https://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1046398336&id=1043284351
关于编译时间,我找不到太多相关文档,但似乎普遍认为,虽然它会略微影响编译时间,但差异可以忽略不计,接近无法测量。
using namespace std;
可能会导致意外行为,通常在全局范围内使用using namespace
是程序员的责任。 - Swift - Friday Pieusing namespace std;
的原因,请阅读 为什么“using namespace std;”被认为是一种不好的做法?。 - Ted Lyngmo