chx helped me figure out how to benchmark tonight, so here are some results from some random tests. Tested on Mac OS X 10.4 and MAMP 1.2.1. The table in question for the fetch tests had about 2,500 records in it: PHP 4.4.2: Initialize 1 million objects: 1192.52 ms Initialize 1 million arrays: 735.15ms Fetch object: 2.34ms Fetch array: 0.81ms Make object with 1,000 properties: 3ms Make array with 1,000 keys: 2.51ms Foreach through 1,000 object properties: 3.78ms Foreach through 1,000 array keys: 2.6ms PHP 5.1.2: Initialize 1 million objects: 811.72 ms Initialize 1 million arrays: 281.83ms Fetch object: 0.94ms Fetch array: 0.72ms Make object with 1,000 properties: 1.77ms Make array with 1,000 keys: 1.38ms Foreach through 1,000 object properties: 0.98ms Foreach through 1,000 array keys: 1.21ms My horrible script is below. ;) Looks like PHP 5 did indeed speed up stuff. In PHP 4, arrays are faster across the board, but in PHP 5 it's somewhat mixed. That said, these can hardly be called "real world" tests :P but I found it kind of interesting. --- <?php include 'includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); echo "Initialize 1 million objects: "; timer_start('object'); for ($i = 0; $i < 1000000; $i++) { $object = new stdClass(); } $stop = timer_stop('object'); echo $stop['time'] ." ms<br />"; echo "Initialize 1 million arrays: "; timer_start('array'); for ($i = 0; $i < 1000000; $i++) { $array = array(); } $stop = timer_stop('array'); echo $stop['time'] .'ms <br />'; echo "Fetch object: "; timer_start('fetch_object'); $result = db_query_temporary("SELECT * FROM {node_revision}"); $i = 0; while ($object = db_fetch_object($result)) { $i++; } $stop = timer_stop('fetch_object'); echo $stop['time'] .'ms <br />'; echo "Fetch array: "; timer_start('fetch_array'); $result = db_query_temporary("SELECT * FROM {node_revision}"); $i = 0; while ($array = db_fetch_array($result)) { $i++; } $stop = timer_stop('fetch_array'); echo $stop['time'] .'ms <br />'; echo "Make object with 1,000 properties: "; timer_start('big_object'); $object = new stdClass(); for ($i = 0; $i < 1000; $i++) { $prop = (string)$i; $object->$prop = $i; } $stop = timer_stop('big_object'); echo $stop['time'] .'ms <br />'; echo "Make array with 1,000 keys: "; timer_start('big_array'); $array = array(); for ($i = 0; $i < 1000; $i++) { $key = (string)$i; $array[$key] = $i; } $stop = timer_stop('big_array'); echo $stop['time'] .'ms <br />'; echo "Foreach through 1,000 object properties: "; timer_start('foreach_object'); $i = 0; foreach ($object as $prop => $value) { $object->$prop = $value++; } $stop = timer_stop('foreach_object'); echo $stop['time'] .'ms <br />'; echo "Foreach through 1,000 array keys: "; timer_start('foreach_array'); $i = 0; foreach ($array as $key => $value) { $array[$key] = $value++; } $stop = timer_stop('foreach_array'); echo $stop['time'] .'ms <br />'; ?>