I just realized something that never occurred to me before - every property is actually stored as a hash.
This test-script will demonstrate: <?php define('NUM_TESTS', 1000); $before = memory_get_usage(true); $test = array(); class Foo { public $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; public $bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb; public $cccccccccccccccccccccccccccccccccccccccccccccccccccc; public $dddddddddddddddddddddddddddddddddddddddddddddddddddd; } $bytes = 0; for ($i=0; $i<NUM_TESTS; $i++) { $foo = new Foo; $foo->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 'a'; $foo->bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = 'b'; $foo->cccccccccccccccccccccccccccccccccccccccccccccccccccc = 'c'; $foo->dddddddddddddddddddddddddddddddddddddddddddddddddddd = 'd'; $bytes += 4; $test[] = $foo; } $after = memory_get_usage(true); header('Content-type: text/plain'); echo ($after-$before).' bytes used; '.$bytes.' bytes of information stored.'; Output is this: 786432 bytes used; 4000 bytes of information stored. I know this an extreme example, I just did it to see if what I suspected was actually correct. How come it's necessary to store the property-names of every property in every object? For properties that have been defined in classes, why can't they be stored in a more efficient manner? (using lookup tables) I know the nature of PHP is dynamic, and I know that dynamic properties would have to be stored in a key/value form internally... but if you look at modern PHP software, dynamic properties is actually something very few people use. My suspicion is that all this memory-overhead has performance implications as well? Allocating and deallocating memory for all of these repeated property-names, it can't be very efficient? I don't know much about the inner workings of PHP or C in general, but if the property-names are in deed stored repeatedly, and if the string-type uses a pointer, wouldn't it possible to point all of the property-name strings to same address in memory, sharing the property-name strings, instead of storing them repeatedly? Just a thought... -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php