3

Iostream に含まれるすべてのファイル、それらに含まれるファイルなどを合計すると、約 3000 行になります。

画面に何かを出力するだけの機能しか必要としない hello world プログラムを考えてみましょう。

#include <iostream> //+3000 lines right there.
int main()
{
    std::cout << "Hello, World!";
    return 0;
}

これは非常に単純なコードのはずですが、iostream はわずかなコードに 3000 行以上を追加します。では、これらの 3000 行以上のコードは、1 行を画面に表示するだけで本当に必要なのでしょうか? そうでない場合、関連する行を単純にコードにコピーした場合よりも効率の悪いプログラムが作成されるのでしょうか?

4

4 に答える 4

3

<iostream>1 行のテキストを印刷するだけで のサイズが気になる場合は、 と を試し<cstdio>てくださいstd::puts()

(まじめな話、もっとシンプルで速い方が請求書に完全に適合するのに、なぜ人々は使用するのですprintf()か? 適切な改行を自動的に追加することさえあります...)coutputs()

本格的アプリケーションでは、のサイズとコンパイル時間は重要で<iostream>はありません。(さらに、他の人がすでに指摘したように、リンカーは使用されていないものにはリンクしません。)

編集:質問に実際に答えていないことに気づきました。いいえ、コード行を印刷するために 3000 行すべてが実際に必要なわけではありませんが、出力行を生成するために必要な「数行」を見つけるのはほとんど不可能であることがわかります。相互依存が激しい。また、コンパイル時間が少し長くなることは別として、害はありません。リンカ段階で「綿毛」がドロップされるため、コードの効率が低下することはありません。

于 2009-10-15T08:38:58.460 に答える
1

これによりコンパイルが遅くなります (ただし、プリコンパイル済みヘッダーなどで軽減できます) が、適切なリンカは不要なものを削除する必要があります。

于 2009-10-15T08:32:53.677 に答える
0

コンパイラは、リンク ステップ中に不要なものをすべて削除しました。手動でクリーニングする必要がないコンパイラに自信を持ってください! 多くの cpp ファイルで使用する多くの大きなヘッダーがある場合のパフォーマンスに関しては、コンパイル時のパフォーマンスを大幅に向上させるプリコンパイル済みヘッダーの使用を検討してください (含まれるヘッダーは事前に解析され、再利用されます)。

于 2009-10-15T08:33:04.893 に答える
-2

C++ では、コードで呼び出されない関数はコンパイルされません。

于 2009-10-15T08:35:07.447 に答える