Mailinglisten-Archive |
Carsten Witt wrote: > Nehmen wir an, diese Basisklasse hat mit Kommentaren 25kB Code. Die Kommentare spielen schonmal keine Rolle, nach dem Parsen und übersetzen sollte davon nichts übrig bleiben. Die Größe des Quelltextes ist auch trügerisch, später im ByteCode kann das ganz anders aussehen. > - Habe ich jetzt 201 Objekte mit gleichem Speicherverbrauch (201*25kB) > oder belegen die abgeleitete Klassen mit weniger PHP-Code weniger > Speicher, etwa 25kb + 1*2,4kB + 20* (1,9kB + 10* 2,1kB)? Oder spielt die > Codelänge fast keine Rolle? Ich bin mir nicht sicher wie PHP das handhabt, aber ich vermute es ist ähnlich wie bei Java. Dort gibt es die Method Area, die von allen Threads einer JVM-Instanz genutzt wird, und die statischen Klassenvariablen, sowie den Programmcode der Methoden enthält. Für alle Instanzen der gleichen Klasse existiert der Code natürlich nur _einmal_ in dieser Method Area. Was pro Objektinstanz generiert wird liegt auf dem Heap, und sind nur die Instanzvariablen, sowie eine Referenz auf die Klasse. Anhand der Codelänge den Speicherbedarf eines Programms ausrechnen zu wollen ist also aussichtslos. Die Anzahl der Instanzvariablen dürfte da schon eher Aufschluss geben. Aber das der objektorientierte Ansatz nicht unbedingt der schlankste/schnellste ist, ist ja allgemein bekannt. Falls PHP gänzlich anders vorgeht würde ich mich freuen wenn jemand die Erklärung postet. Gruß André
php::bar PHP Wiki - Listenarchive