2017-07-06 3 views
-1

私は別の共有ライブラリ(python dll)に動的にリンクするC++プログラム(実際にはdllです)を使用していますが、このプログラムには2つの機会があります。使用されない共有ライブラリを動的にリンクするとパフォーマンスが低下しますか?

場合によっては、プログラムはダイナミックにリンクされた共有ライブラリへの関数呼び出しを行いますが、Bではプログラムは呼び出されません。

私の質問は、共有ライブラリーにリンクせずに特別にプログラムBをビルドすると、実際に使用せずに共有ライブラリーをリンクした場合と比較してパフォーマンスが向上しますか?

+0

私は「重要でない時」と思っています.. – user2864740

答えて

1

実際には、OSとは何か、共有ライブラリは何か、そしてアプリケーションが実際に何をしているかといういくつかの要素に依存しています。共有ライブラリの構築方法

一般的に、共有ライブラリはデマンドロードされ、位置独立アドレッシング[PIC](PC相対など)を使用するため、特に大きなペナルティはありません。これは、共有ライブラリが実際に使用されているときだけロードされ、ライブラリをロードするための「作業なし」があることを意味します。パフォーマンスの影響を受けやすい多くのアプリケーション(コンパイラやWebサービスなど)では、誤って設計された共有ライブラリシステムがパフォーマンスを悪化させるため、これはOS設計者やシステム設計者が多く考えるものです。

もちろん、共有ライブラリを構築するときに設定することは可能です。少なくともこれのPICの側面を使用するので、共有ライブラリのビルドを構成している人/企業が「したい」場合、それはひどく構成され、ゼロ効果より悪くなる可能性があります。

これには、共有ライブラリが行うすべての初期化を追加する必要があります。うまく設計された共有ライブラリは、「オンデマンド」または「遅延」初期化を実行します。つまり、実際に必要となるまで、初期化はほとんど行いません。ここでも、正確にどのライブラリが構築されたかなど、どのライブラリが詳細に構成されているかは、ここで大きな違いを生むことができます。

具体的なユースケースでは、余分な共有ライブラリを「with」と「without」で構築し、実際のパフォーマンスを測定することしか実際にはありません。

関連する問題