RE: [PHP-DEV] Merge HashTable and zend_array into a single data structure.
| From: | François Laupretre | Date: | Wed, 31 Dec 2014 17:50:33 +0000 |
| Subject: | RE: [PHP-DEV] Merge HashTable and zend_array into a single data structure. | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-80025@lists.php.net to get a copy of this message | ||
> De : Dmitry Stogov [mailto:dmitry@zend.com]
> 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.
"Showing 46 changed files with 193 additions and 204 deletions". I am sorry but I
can't analyze the impacts of your change, just from the patch. Did you write an RFC that would
explain the impact, especially for extension writers ?
More generally, what is the rule ? Is there a list of people who can introduce changes in the code,
and even BC breaks in the C API, without writing RFCs, or is it just a question of rights/karma on
the source repository ? I say that because it is especially hard to have a proposed change accepted
on the mailing list, as several 'watchdogs' are there to dismiss ideas coming from people
they don't know.