Methoden-Pendant zu static Variablen?
- 
					
					
					
					
 Hallo! Ich weis nicht so recht wonach ich suchen soll, desshalb wollt ich mal fragen ob ihr nen Tip für mich habt. Problem: 
 Ich werte ein Logfile aus, wobei jede Logzeile aufgeschlüsselt in einem Objekt abgelegt wird. Zum testen hab ich momentan ein Logfile, welches ca 12MB groß ist. Die RAM Auslastung geht dabei schon auf so ca. 50MB.An anderen stellen im Programm konnte ich den Ablauf durch static variablen erheblich beschleunigen ( Templates werden nur einmal eingelesen, der erzeugte Quelltext landet in einem statischen string innerhalb der Methode). Meine Idee war jetzt etwas ähnliches mit den Methoden hinzubekommen. Die Methoden um auf die eigenschaften des Logeintrags zuzugreifen sollten möglichst nur einmal im speicher liegen, aber a la objekt1->getdocumentname() für jedes Objekt die korrekten Daten liefern. 
 static void meinemethode(){} Scheints ja nun mal leider auch nicht zu sein...Frage: 
 Gibts für sowas schlüsselworte, oder kann ich es nur durch ne umorganisierung meiner klassen erreichen die Speicherlast zu verringern?Gruß 
 FreaK
 
- 
					
					
					
					
 Es gibt static Methoden. 
 Allerdings ist mir nicht ganz klar, was du dir davon versprichst.
 Statische Variablem existieren in der Klasse nur einmal.
 Dein Speicherverbrauch kann aber auch auf ein Speicherleck
 hindeuten, wie legst du deine Objekte an ?
 
- 
					
					
					
					
 //pseudocode entry* temp; DataStorage DataSet; // ... while( foo() ) { // ... temp = new entry(logline); // ... }prinzipiell so, da ich die Daten während der gesamten Laufzeit benötige. 
 DataStorage enthält ne liste mit custome*. dadrunter liegt noch sone schicht und zum schluss kommen die entry*.
 Bei der vernichtung läufts für jede liste, also auch für die entrys so:DataStorage::~DataStorage ( ) { for ( int i = data.size()-1; i >= 0; --i ) delete data.at( i ); }Wie gesagt, in übergeordneten Objekte nutze ich static variablen innerhalb von methoden. Was ich erreichen will ist folgendes: 
 Auch wenn ich ca 200000 objekte und mehr im RAM habe sollen möglichst die funktionen nur 1x drin liegen. Allerdings soll die Funktion nicht eingeschränkt werden.foo() soll nur 1x im ram sein aber dennoch obj1->foo(); obj2->foo(); //...möglich sein. Speicherleck solltes also nicht sein, da wie gesagt die Objekte alle zu jeder Zeit im RAM liegen müssen. 
 
- 
					
					
					
					
 Die Methoden haben keine Objekte, die Instanzen haben i.d.R. 
 nur die Variablen, sowie einen Typen, die Methoden liegen
 dann nur einmal im Speicher, und referenzieren jeweils auf
 das Aktuelle objekt. Evtl. solltest du dir überlegen,
 ob du wirklich 200000 Objekte brauchst.
 Und ob du wirklich immer alle Objekte zur Laufzeit brauchst.
 
- 
					
					
					
					
 ok, das doch mal ne info  ja leider schon, da ich alle daten auswerten muss und alternativ tausende statistikobjekte mit redundanten daten im RAM hätte, was meiner meinung nach wesendlich schlechter zu handlen ist. Aktuell lese ich die Daten ein und lasse Funktionen über die Objektstruktur laufen , die dann daraus HTML Reports erstellen. Ein DBMS hab ich leider auch nicht zur verfügung 