Hallo OO-Freaks !
Um einen Algorithmus über einen Graphen zu realisieren, erzeuge mir eine Liste von Knoten (mehr als 100.000 Stück), die jeweils wiederum Listen von Kanten enthalten. Je Kante sind weitere Informationen gespeichert.
Wenn ich den Knoten Methoden verpasse, um mit ihren Kanten zu operieren, werden die einzelnen Objekte größer und es passen nicht mehr allzuviele in den Hauptspecher. Andererseits liegt der Code dann jeweils in der Nähe der Daten, auf die er zugreift.
Wenn ich Knoten ohne Methoden baue, und die Funktionalität in das Hauptprogramm einbaue, liegt der Code dichter zusammen und ist klein, die Daten sind aber stets weit weg.
Was ist denn günstiger ?
Hat ein Pentium getrennte Caches für Code und Daten ? Dann wäre wohl Nummer 2 die Wahl, oder spielt das keine Rolle ?
Oder kann es eventuell sogar sein, dass der Compiler das eh optimiert, dass selbst wenn der Code in den Objekten steckt trotzdem nur einmal Speicher für alle Methoden benötigt wird.
(benutze Borland Compiler)
Ich weiss, das sind ganzschön viele Fragen, aber sie laufen letztendlich alle auf die selbe Antwort hinaus:
Was ist günstiger:
vielmals den gleichen Code und den jeweils bei den Daten oder
wenig Code dafür aber Daten weit weg
Vieleicht hat jemand sowas schon mal programmiert und Erfahrungen gemacht.
Ich bin jedenfalls für Hinweise sehr dankbar.
ciao, Christian