Some measurements on Arrays vs ArrayObjects found among gist users. Just going to bring it here, in case gist dissappears.
# php -v
PHP 5.3.6 (cli) (built: Mar 17 2011 20:58:15)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
# echo '<?php $s = array(); for($x=0;$x<1000;$x++){ $s[] = array("name"=>"Adam","age"=>35); }; echo memory_get_peak_usage(); ' | php
655040
# echo '<?php $s = array(); for($x=0;$x<1000;$x++){ $o = new ArrayObject; $o->name = "Adam"; $o->age = 35; $s[] = $o;} echo memory_get_peak_usage(); ' | php
887984
# time echo '<?php $s = array(); for($x=0;$x<100000;$x++){ $o = new ArrayObject; $o->name = "Adam"; $o->age = 35; $s[] = $o;} echo memory_get_peak_usage(); ' | php
61010784
real 0m1.448s
user 0m1.208s
sys 0m0.231s
# time echo '<?php $s = array(); for($x=0;$x<100000;$x++){ $s[] = array("name"=>"Adam","age"=>35); }; echo memory_get_peak_usage(); ' | php
33647944
real 0m0.525s
user 0m0.429s
sys 0m0.092s
We can conclude the following at least in PHP 5.6:
- Winner for Speed: Arrays are faster than objects (with undefined or defined properties)
- Winner for Memory: Objects with defined properties use less memory, 50%+ less than objects with undefined properties, only slightly less than Arrays
Ordered Fastest to Slowest in Speed for 100,000 items:
- 0.107s - Arrays
- 0.163s - Objects with undefined properties
- 1.190s - Objects with defined properties
Ordered Least to Most Memory Usage for 1,000 items:
- ~583kb - Objects with defined properties
- ~807kb - Arrays
- ~1.1mb - Objects with undefined properties