Problem mit mallinfo_heap
-
Hallo liebes Forum

ich habe ein großes Probelem!
Benötige zur Prüfung, ob eine zwischenpersistierung meiner Objekte notwendig ist, inforamatationen über noch freien heap-speicher.
Momentan ist dies so implementiert:
struct mallinfo_heap structHeap = mallinfo_heap (0);Wenn sich nun mein Speicher füllt benotigt diese Codestelle expotentiell zeit. Bei neuinitierung meines Process ist die Ausführungszeit nicht messbar, steigt nach einer gewissen zeit auf durchschnittlich 0,109 sek an! keines falls akzeptabel!
Kann mir jemand bei der lösung des Problems helfen oder kennt jemand eine effektiveres Konstrukt zur Abfrage des Speichers?
Vielen Dank für euche mithilfe im voraus...
theOneWithTheProblem
-
Die Funktion mallinfo_heap ist doch von dir selber geschrieben, oder? Ohne zu wissen, wie der Inhalt der Funktion nun aussieht, kann dir wohl keiner was zu deren Laufzeitverhalten sagen :p
Ne, alles was ich kenne, um die restliche Größe des Speichers zu ermitteln, sind OS-spezifische Funktionen, ich glaube nicht, dass C++ an sich sowas unterstützt. Unter Windows gibts z.B. die Funktion ... hm, vergessen, finde sie auch nicht mehr
sry.. 
-
nein, nein... die malloc_heap ist nicht von mir, sondern IBM (AIX):
mallinfo_heap
Syntax#include <malloc.h>
#include <stdlib.h>struct mallinfo_heap mallinfo_heap (Heap)
int Heap;Description
In a multiheap context, the mallinfo_heap subroutine can be used to obtain information about a specific heap managed by the malloc subsystem.Parameters
Heap Specifies which heap to query.
Return Values
mallinfo_heap returns a structure of type struct mallinfo_heap, filled in with relevant information and statistics about the heap. The contents of this structure can be interpreted using the definition of struct mallinfo_heap in /usr/include/malloc.h.Error Codes
The mallinfo_heap subroutine does not set errno.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
- gestrichen -
-
So kann auch geholfen werden

Nein, spaß bei Seite. Ich konnte das Problem bisher immer noch nicht lösen (bessergesagt, ich habe es in der zwischenzeit nicht weiterverfolgt). Dennoch muss ich es irgendwie in den Griff bekommen...
-
Hm, aber bist du dir sicher, dass du es überhaupt so oft aufrufen musst? Kannst du das nicht irgendwie umgehen? Und für was für ein System programmierst du? Gibts da vielleicht eine Funktion, die performanter ist?
-
theOneWithTheProblem schrieb:
So kann auch geholfen werden

Nein, spaß bei Seite. Ich konnte das Problem bisher immer noch nicht lösen (bessergesagt, ich habe es in der zwischenzeit nicht weiterverfolgt). Dennoch muss ich es irgendwie in den Griff bekommen...
wenn die funktion teuer ist, dann muss du irgendwie versuchen, diese funktion seltener aufzurufen. z.b. indem du selber abschätzt, wie viel speicher allokiert wurde und die schätzung dann ab und zu korrigierst.
Gruß
mathik