C++ テンプレートまたは Java Generics のいずれかを使用し、残りの言語の問題 (実行時間など) を無視してソリューションを実装することを選択する必要がある場合、生成されるコードのサイズが重要な場合、どちらが優先されますか?
Java Generics では、コンパイル後に型パラメーターがスローされ、メタデータに格納されないことを読みましたが、これはプログラムのサイズを小さくするかどうかにつながりますか?
まず、これらは似ていないことを理解する必要があります。実際、それらはほぼ正反対です。
これらの 2 つの事実からすべてが導かれます。Java Generics は、スペースまたは時間のコストをゼロにします。C++ テンプレートは両方のコストを追加します。巧妙なインライン化とテンプレート化されていない基本クラスの使用 (古いvoid *
トリック) により、C++ スペースのコストを最小限に抑えることができ、場合によってはそれをなくすことさえできますが、C++ コンパイラが実際にどのようにインライン化を行うかについて十分な注意と予測が必要です。