Hi Dmitry, On Wed, December 31, 2014 11:19, Dmitry Stogov wrote: > Hi, > > > Please take a look into the patch > > > https://github.com/php/php-src/pull/970/files > > > This real changes are in zend_types.h, the rest is renaming that in most > cases makes code cleaner. > > zend_array didn't change its binary representation, but now it's not > possible to get a pointer to embedded HashTable. The same zend_array > shoukd be used instead. > > Each HashTable got an extra 64-bit zend_refcounted header. This leads to > some increase in memory consumption. > > The performance is slightly increased (may be measured with callgrind). > > > The patch beaks one test (tests/lang/foreachLoopObjects.006.phpt), but > actually it just disclose a problem that we have anyway. > > The patch should be a base for the future optimizations. e.g. removing > HashTable->arData and/or HashTable->arHash and allocating them together > with zend_array; introducing EG(empty_array) etc. > > Opinions are welcome... > > > Thanks. Dmitry. > > I've tested the patch on Windows x64 TS build. On my laptop the profiler tells 8.5m more instructions retired. I guess that's because of less dereferencing happening (it operates faster and pipelines have more idle time). Also there's less branch misprediction and a negligible memory usage increase. All in all - the patch is probably more like an intermediate step to the further optimization you mention. But even in the current patch state - there's no impact.
Regards Anatol -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php