490 Stimmen

Statische Verknüpfung vs. dynamische Verknüpfung

Gibt es zwingende Leistungsgründe, die in bestimmten Situationen dafür sprechen, statisches Linking dem dynamischen Linking vorzuziehen oder umgekehrt? Ich habe Folgendes gehört oder gelesen, aber ich weiß nicht genug über das Thema, um mich für seine Richtigkeit zu verbürgen.

1) Der Unterschied in der Laufzeitleistung zwischen statischem Linking und dynamischem Linking ist in der Regel vernachlässigbar.

2) (1) trifft nicht zu, wenn ein profilierender Compiler verwendet wird, der Profildaten zur Optimierung von Programm-Hotpaths verwendet, da der Compiler beim statischen Linken sowohl Ihren Code als auch den Code der Bibliothek optimieren kann. Beim dynamischen Linking kann nur Ihr Code optimiert werden. Wenn die meiste Zeit mit der Ausführung von Bibliothekscode verbracht wird, kann dies einen großen Unterschied ausmachen. Ansonsten gilt immer noch (1).

0voto

Phil K Punkte 268

Eine weitere Überlegung ist die Anzahl der Objektdateien (Übersetzungseinheiten), die Sie tatsächlich in einer Bibliothek verbrauchen, im Vergleich zur Gesamtzahl der verfügbaren Dateien. Wenn eine Bibliothek aus vielen Objektdateien erstellt wird, Sie aber nur Symbole aus einigen davon verwenden, könnte dies ein Argument für statisches Linken sein, da Sie beim statischen Linken nur die Objekte linken, die Sie (normalerweise) verwenden, und die nicht verwendeten Symbole normalerweise nicht mitführen. Wenn Sie sich für eine gemeinsam genutzte Bibliothek entscheiden, enthält diese alle Übersetzungseinheiten und könnte viel größer sein, als Sie es wünschen oder benötigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X