Linux でアプリケーションを使用しています。静的バージョンと動的 (.so) バージョンの両方をサポートします
パフォーマンスの観点から、ユーザーはどのバージョンを使用する必要がありますか? アプリケーションは、数時間の CPU 時間を必要とする計算タスクを実行します。
あるライブラリを他のライブラリよりも使用することの他の利点はありますか?
ありがとう
Linux でアプリケーションを使用しています。静的バージョンと動的 (.so) バージョンの両方をサポートします
パフォーマンスの観点から、ユーザーはどのバージョンを使用する必要がありますか? アプリケーションは、数時間の CPU 時間を必要とする計算タスクを実行します。
あるライブラリを他のライブラリよりも使用することの他の利点はありますか?
ありがとう
純粋なパフォーマンスの観点から:
共有オブジェクトはPIC(位置に依存しないコード)としてコンパイルされますが、一部のアーキテクチャ(x86を含む)では、理論的には通常のコードよりもわずかに効率が低下する可能性があります。
しかし、これが本当の違いになるとは思いません。
他のポイントから
共有オブジェクトを使用します。静的ライブラリに比べて多くの利点があるため、より良い代替手段です。
パフォーマンスの観点から、ダイナミックライブラリが頻繁にロードおよびアンロードされない限り、違いは最小限です。
唯一の違いは、動的ライブラリが実行可能ファイルに組み込まれるのではなく、必要なときにロードされることです(したがって、ロード時間はありません)。
ダイナミックライブラリは、複数の実行可能ファイルで再利用することもできます。これが、私が過去にダイナミックライブラリを使用した主な理由です。
通常、動的ライブラリを使用してバイナリのサイズを縮小します。おそらく問題にならないアプリケーションの起動を除いて、実行時のペナルティはありません。
通常、静的にバインドされたライブラリは、ライブラリの検索と読み込みのオーバーヘッドがないため高速ですが、数時間のプログラムの場合、パフォーマンスの違いは小さすぎて気付かないはずです。
とにかく、本当に確実にする唯一の方法は、自分でベンチマークすることです。