2012-02-26 12 views
6

まず、ユーザ定義のヘッダと対応するcppファイルを使用します。それから私は含めます。 DLLに切り替えると、コードの実行速度は遅くなりますか?DLLの実行速度への影響

第2に、「DLL」では「D」は「ダイナミック」を表していますが、私の友人はそれらを使用するには2つの方法があると言いました。それがすでに動的であれば、「静的」で何をする必要がありますか?

答えて

12

DLLを使用すると、DLLの読み込みによってアプリケーションの起動時間が長くなるのを除いて、DLLを使用してもパフォーマンスに大きな違いはありません(大文字と小文字が区別されます)。クリティカルなアプリケーションでは、DLL(インテルの数学ライブラリなど)を使用します。コンパイラがプログラム全体の最適化を行うことができない場合、マイナスの罰則がありますが、これは通常は重要ではない小さな違いです。

静的/動的について:私は、通常の方法(インポートライブラリを使用して)をDLLとリンクすることができると考えています。実行時に常にロードまたはロードされます(LoadLibrarydlopen)パフォーマンスの違いはありませんが、LoadLibraryを使用すると、実際に必要になるまでライブラリの読み込みを遅延させることができます。

+1

また、一部のツールチェーンは自動遅延遅延ロードを提供します。 Microsoftの['/DELAYLOAD'](http://msdn.microsoft.com/en-us/library/yx9zd12s.aspx)スイッチ –

+0

ウェブサイト(http://logix4u.net/vc/19-a-tutorial- on-creating-dlls-vc)私はDLLが従来の方法よりも遅いことを読んでいます。それはわずかな文章です。あなたもそれについてコメントできますか? – Shibli

+0

DLLを呼び出すには、最大で関数ポインタを使用して関数を呼び出すコストがあります。これは、軽度でない関数のゼロオーバーヘッドの次にあります(非常に小さな関数は、インラインで作成することもできます)。これは、仮想関数呼び出しと同等のコストです。 – Anteru

2
  1. 生産性は、一般的にローカル関数呼び出しと同様にdllから関数を呼び出す限り、回帰してはいけません。 LIBSの

  2. つのタイプが存在する:ビューの

    • 一方からPOIN、動的 LIBSと静的 LIBS。ここでのlibからすべてのコードが静的あなたexeへのリンクされますことを静的手段、逆にダイナミック libには、実行可能ファイルからに別々のコードにできますライブラリを共有し、そのコードを動的にをロードされます。
    • はその後、ダイナミック libaryは静的にリンクすることができ、それはそのOSが起動時にプログラムにライブラリをリンクし、動的、つまり、あなたが手で、ライブラリ内の階建てのシンボルへのポインタを取得、を意味します。動的な読み込みでは柔軟性が増しますが、静的な読み込みでは難しくなります。
関連する問題