次のコードが同じ目的で書かれているとします。残りのプログラムのコードは同じです。
コード1
#include <vector>
using namespace std;
vector<int> vector1;
vector<int> vector2;
vector<int> vector3;
vector<int> vector4;
コード2
#include <vector>
using namespace std;
vector<int> vector1;
vector<short> vector2;
vector<char> vector3;
vector<bool> vector4;
どちらが優れていますか(実行可能サイズの観点から)?(ヒント: 実行可能ファイルを検討してください)
g++ -S で得られたアセンブリ結果を比較しました。
驚いたことに、2 番目のプログラムの行数は 1778 で、最初のプログラムは 630 です。これは、最初のプログラムの方が優れていることを意味します。
この動作の理由を説明するために、「テンプレート ベースのプログラムのコンパイル方法」に関する適切なリソースを探しましたが、見つかりませんでした。
テンプレートを使用するプログラムは、コンパイラによってどのようにアセンブリにコンパイルされますか? あなたは良いリソースを持っていますか?(これは宿題ではありませんが、私の職場で与えられた自習問題です。答えを出さないと思われる場合は、少なくとも良いリソースを教えてください)