Speicherbedarf einer library

Gast #6380596
Hallo,
angenommen ich benutze zum programmieren (c) eine lib, welche mir 5 
Funktionen zur Verfügung stellt.
func1, func2, func3, func4, func5.
Wenn ich jetzt in meinem Projekt aber nur func2 benutze. Wie viel 
speicher wird verwendet? Von der kompletten lib? Oder nur, was für func2 
benötigt wird?
Wenn zweiteres, wäre es dann besser func2 neu zu implementieren 
(angenommen man würde es gleich machen wie in der lib)? Dann hätte man 
ja definitiv nur den Speicherbedarf für func2.

Mir geht es nur darum, um mal zu wissen, wie viel speicher von einer lib 
benötigt wird.
Gast #6380605
Lukas schrieb:

> angenommen ich benutze zum programmieren (c) eine lib, welche mir 5
> Funktionen zur Verfügung stellt.
> func1, func2, func3, func4, func5.
> Wenn ich jetzt in meinem Projekt aber nur func2 benutze. Wie viel
> speicher wird verwendet? Von der kompletten lib? Oder nur, was für func2
> benötigt wird?

Hängt vom Linker ab und davon, ob linktime-Optimierungen 
aktiv/erlaubt/möglich sind.

Aber selbst wenn man den optimalen Fall annimmt, dass also diese 
Optimierungen möglich und erlaubt sind, wird immer noch genug Schotter 
über bleiben. Denn typisch stellen solche API-Funktionen nur eine 
kleinen Teil des Codes dar. Der ganze dicke Rest ist auch dann nötig, 
wenn du nur eine davon verwendest...
Gast #6382012
Normalerweise:

Alle Funktionen und Variablen die zusammen mit func2 in einer .c-Datei 
stehen
+ Alle .c-Dateien, in denen Funktionen oder Variablen sind, die direkt 
oder indirekt verwendet werden.

Schau Dir den Quelltext der standardlib an. Deshalb ist abs() als 
Dreizeiler im einer eigenen .c.

Bei printf zieht man dagegen einen ganzen Sumpf mit, z.b
 Floatingpoint-Mathe. Oder muss per linker eine Version aus 3 oder so 
auswählen.
Gast #6382155
Einzig zuverlässige Möglichkeit ist Ausprobieren: linken und die Memory 
Map studieren. Leider ist selektives Linken aus der Mode gekommen, weil 
man ja immer GByte-weise Speicher hat, manche Systeme linken eine 
komplette Laufzeit-Bibliothek dazu egal was gebraucht wird, und dann ist 
Hello World mehrere MByte gross.

Es ist bei mir für Steuerungen z.B. öfter vorgekommen, dass ich 
Multiplikation gebraucht habe, Division usw. aber nicht. Das muss man 
dann meistens per Hand regeln.

Georg

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.