Forum: PC-Programmierung Speicherbedarf einer library


von Lukas (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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...

von Pandur S. (jetztnicht)


Lesenswert?

Probier's aus.
Es gibt Leute die verwenden einzig zum Debuggen eine printf(myfloatADC) 
um einen ADC Wert auszugeben, und wundern sich weswegen nichts mehr 
sonst reinpasst.

von A. S. (Gast)


Lesenswert?

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.

von georg (Gast)


Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

georg schrieb:
> Das muss man
> dann meistens per Hand regeln.

deswegen nutze ich arduino nano die float LIB (sprintf, printf) nie und 
rechne mit ganzzahligen Integer, mV cV dV, das Komma wenn benötigt kann 
man auch per Text einsetzen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.