私は "namespace std"を使うべきではなく、代わりにstd名前空間の呼び出しを使うために "std :: cout"を使うべきであると教えられたセッションに出席しました。バイナリのサイズを増やすことになります名前空間の包含はexeのサイズを増やす
以下の実験でも同じことを試してみました。次のようにコード&その出力は次のようになります -
[[email protected]]$ cat namespacestd.cpp
#include<iostream>
#ifdef STD
using namespace std;
#endif
int main()
{
#ifndef STD
std::cout<<"\n ==> Workign \n";
#else
cout<<"\n ==> Workign \n";
#endif
return 0;
}
[[email protected]]$ time g++ -c namespacestd.cpp -DSTD
real 0m0.246s
user 0m0.215s
sys 0m0.030s
[[email protected]]$ size namespacestd.o
text data bss dec hex filename
310 8 1 319 13f namespacestd.o
[[email protected]]$ time g++ -c namespacestd.cpp
real 0m0.258s
user 0m0.224s
sys 0m0.034s
[[email protected]]$ size namespacestd.o
text data bss dec hex filename
310 8 1 319 13f namespacestd.o
[[email protected]]$ time g++ -o namespacestd namespacestd.cpp -DSTD
real 0m0.293s
user 0m0.251s
sys 0m0.042s
[[email protected]]$ size namespacestd
text data bss dec hex filename
1980 580 288 2848 b20 namespacestd
[[email protected]]$ time g++ -o namespacestd namespacestd.cpp
real 0m0.274s
user 0m0.239s
sys 0m0.035s
[[email protected]]$ size namespacestd
text data bss dec hex filename
1980 580 288 2848 b20 namespacestd
[[email protected]]$
私は
はバイナリ
のみ
の大きさには影響がないというのが私の実験からわかるようにコンパイル時にに違いがあります。私の結論は、ほとんどのコンパイラとのバイナリサイズに影響を及ぼすべきではない名前空間stdを使用して
おかげ
コンパイル時間に違いがあるかもしれませんが( '使用するともっと多くの作業が行われる可能性があります)、それは非常に理論的です... –
コンパイル時間の違いについてはあまり気にしません。反復試験は一貫した差異を示す。 'g ++ 'は、そのプログラムをコンパイルするために少なくとも数十のファイルに当てはまり、タイミングが変わる可能性があります。 –
私はコンパイル時間が無関係であることに同意します – Fooo