Re: cvs: php-src(PHP_5_2) / NEWS /ext/standard array.c

From: Date: Mon, 13 Nov 2006 14:44:09 +0000
Subject: Re: cvs: php-src(PHP_5_2) / NEWS /ext/standard array.c
References: 1 2  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-41516@lists.php.net to get a copy of this message
Matt, I did a cursory check through ext/ and this seems like the only place the optimization trick can be applied. I will look into writing a patch for HEAD when I have a bit more time. On 12-Nov-06, at 6:20 PM, Matt Wilmas wrote:
Hi Ilia, Ah, I had wondered what other places could be changed to use the _quick functions (but didn't really check). :-) Anyway, will this be applied to HEAD also? Matt ----- Original Message ----- From: "Ilia Alshanetsky" Sent: Sunday, November 12, 2006
iliaa Sun Nov 12 17:13:23 2006 UTC
  Modified files:              (Branch: PHP_5_2)
    /php-src NEWS
    /php-src/ext/standard array.c
Log: Optimized array functions utilizing php_splice().
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.357&r2=1.2027.2.547.2.358&diff_format=u
Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.357 php-src/NEWS:1.2027.2.547.2.358 --- php-src/NEWS:1.2027.2.547.2.357 Sun Nov 12 01:14:39 2006 +++ php-src/NEWS Sun Nov 12 17:13:22 2006 @@ -15,6 +15,7 @@ - Streams optimization (Dmitry) . removed unnecessary ftell() calls (one call for each included PHP
file)
. disabled calls to read() after EOF +- Optimized array functions utilizing php_splice(). (Ilia) - VCWD_REALPATH() is improved to use realpath cache without VIRTUAL_DIR. (Dmitry) - ext/bcmath intialization code is moved from request startup to module
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.15&r2=1.308.2.21.2.16&diff_format=u
Index: php-src/ext/standard/array.c diff -u php-src/ext/standard/array.c:1.308.2.21.2.15
php-src/ext/standard/array.c:1.308.2.21.2.16
--- php-src/ext/standard/array.c:1.308.2.21.2.15 Sun Nov 12 01:14:39 2006 +++ php-src/ext/standard/array.c Sun Nov 12 17:13:22 2006 @@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/ -/* $Id: array.c,v 1.308.2.21.2.15 2006/11/12 01:14:39 bjori Exp $ */ +/* $Id: array.c,v 1.308.2.21.2.16 2006/11/12 17:13:22 iliaa Exp $ */ #include "php.h" #include "php_ini.h" @@ -1874,7 +1874,7 @@ /* Update output hash depending on key type */ if (p->nKeyLength) - zend_hash_update(out_hash, p->arKey, p->nKeyLength, &entry, sizeof(zval
*), NULL);
+ zend_hash_quick_update(out_hash, p->arKey, p->nKeyLength, p->h, &entry,
sizeof(zval *), NULL);
else zend_hash_next_index_insert(out_hash, &entry, sizeof(zval *), NULL); } @@ -1885,7 +1885,7 @@ entry = *((zval **)p->pData); entry->refcount++; if (p->nKeyLength) - zend_hash_update(*removed, p->arKey, p->nKeyLength, &entry, sizeof(zval
*), NULL);
+ zend_hash_quick_update(*removed, p->arKey, p->nKeyLength, p->h, &entry,
sizeof(zval *), NULL);
else zend_hash_next_index_insert(*removed, &entry, sizeof(zval *), NULL); } @@ -1897,17 +1897,7 @@ /* ..for each one, create a new zval, copy entry into it and copy it
into the output hash */
for (i=0; i<list_count; i++) { entry = *list[i]; - if (entry->refcount>=1000) { - zval *tmp = (zval *) emalloc(sizeof(zval)); - - *tmp = *entry; - zval_copy_ctor(tmp); - tmp->refcount = 1; - tmp->is_ref = 0; - entry = tmp; - } else { - entry->refcount++; - } + entry->refcount++; zend_hash_next_index_insert(out_hash, &entry, sizeof(zval *), NULL); } } @@ -1917,7 +1907,7 @@ entry = *((zval **)p->pData); entry->refcount++; if (p->nKeyLength) - zend_hash_update(out_hash, p->arKey, p->nKeyLength, &entry, sizeof(zval
*), NULL);
+ zend_hash_quick_update(out_hash, p->arKey, p->nKeyLength, p->h, &entry,
sizeof(zval *), NULL);
else zend_hash_next_index_insert(out_hash, &entry, sizeof(zval *), NULL); } @@ -2212,7 +2202,7 @@ /* Get the arguments and do error-checking */ argc = ZEND_NUM_ARGS(); if (argc < 2 || argc > 4 || zend_get_parameters_ex(argc, &input,
&offset, &length, &z_preserve_keys)) {
- WRONG_PARAM_COUNT; + WRONG_PARA¬M_COUNT; } if (Z_TYPE_PP(input) != IS_ARRAY) {
Ilia Alshanetsky

« previous php.cvs (#41516) next »