andrey Thu, 22 Apr 2010 15:07:40 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=298323
Log: Remove dead code and add possibility to fine tune the size of a mempool (used for result sets). Changed paths: U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_block_alloc.c U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_ps.c U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h U php/php-src/branches/PHP_5_3/ext/mysqlnd/php_mysqlnd.c U php/php-src/trunk/ext/mysqlnd/mysqlnd.h U php/php-src/trunk/ext/mysqlnd/mysqlnd_block_alloc.c U php/php-src/trunk/ext/mysqlnd/mysqlnd_ps.c U php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c U php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h U php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c
Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.h 2010-04-22 15:07:40 UTC (rev 298323) @@ -277,6 +277,7 @@ long net_read_buffer_size; long log_mask; long net_read_timeout; + long mempool_default_size; ZEND_END_MODULE_GLOBALS(mysqlnd) ZEND_EXTERN_MODULE_GLOBALS(mysqlnd); Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_block_alloc.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_block_alloc.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_block_alloc.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -29,22 +29,6 @@ /* {{{ mysqlnd_mempool_free_chunk */ static void -mysqlnd_mempool_free_contents(MYSQLND_MEMORY_POOL * pool TSRMLS_DC) -{ - unsigned int i; - DBG_ENTER("mysqlnd_mempool_dtor"); - for (i = 0; i < pool->free_chunk_list_elements; i++) { - MYSQLND_MEMORY_POOL_CHUNK * chunk = pool->free_chunk_list[i]; - chunk->free_chunk(chunk, FALSE TSRMLS_CC); - } - - DBG_VOID_RETURN; -} -/* }}} */ - - -/* {{{ mysqlnd_mempool_free_chunk */ -static void mysqlnd_mempool_free_chunk(MYSQLND_MEMORY_POOL_CHUNK * chunk, zend_bool cache_it TSRMLS_DC) { MYSQLND_MEMORY_POOL * pool = chunk->pool; @@ -62,13 +46,7 @@ } else { mnd_free(chunk->ptr); } - if (cache_it && pool->free_chunk_list_elements < MYSQLND_MEMORY_POOL_CHUNK_LIST_SIZE) { - chunk->ptr = NULL; - pool->free_chunk_list[pool->free_chunk_list_elements++] = chunk; - } else { - /* We did not cache it -> free it */ - mnd_free(chunk); - } + mnd_free(chunk); DBG_VOID_RETURN; } /* }}} */ @@ -110,7 +88,7 @@ memcpy(new_ptr, chunk->ptr, chunk->size); chunk->ptr = new_ptr; chunk->size = size; - chunk->pool = NULL; /* now we have no pool memory */ + chunk->pool = NULL; /* now we have non-pool memory */ pool->refcount--; } } @@ -129,11 +107,7 @@ MYSQLND_MEMORY_POOL_CHUNK *chunk = NULL; DBG_ENTER("mysqlnd_mempool_get_chunk"); - if (pool->free_chunk_list_elements) { - chunk = pool->free_chunk_list[--pool->free_chunk_list_elements]; - } else { - chunk = mnd_malloc(sizeof(MYSQLND_MEMORY_POOL_CHUNK)); - } + chunk = mnd_malloc(sizeof(MYSQLND_MEMORY_POOL_CHUNK)); chunk->free_chunk = mysqlnd_mempool_free_chunk; chunk->resize_chunk = mysqlnd_mempool_resize_chunk; @@ -167,7 +141,7 @@ MYSQLND_MEMORY_POOL * ret = mnd_calloc(1, sizeof(MYSQLND_MEMORY_POOL)); DBG_ENTER("mysqlnd_mempool_create"); - ret->free_size = ret->arena_size = arena_size; + ret->free_size = ret->arena_size = arena_size ? arena_size : 0; ret->refcount = 0; /* OOM ? */ ret->arena = mnd_malloc(ret->arena_size); @@ -184,7 +158,6 @@ { DBG_ENTER("mysqlnd_mempool_destroy"); /* mnd_free will reference LOCK_access and might crash, depending on the caller...*/ - mysqlnd_mempool_free_contents(pool TSRMLS_CC); mnd_free(pool->arena); mnd_free(pool); DBG_VOID_RETURN; Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_ps.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_ps.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_ps.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -102,7 +102,7 @@ result->m.fetch_row = mysqlnd_fetch_stmt_row_buffered; result->m.fetch_lengths = NULL;/* makes no sense */ - result->result_set_memory_pool = mysqlnd_mempool_create(16000 TSRMLS_CC); + result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC); ret = result->m.store_result_fetch_data(conn, result, result->meta, TRUE, to_cache TSRMLS_CC); Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -856,7 +856,7 @@ } result->unbuf = mnd_ecalloc(1, sizeof(MYSQLND_RES_UNBUFFERED)); - result->result_set_memory_pool = mysqlnd_mempool_create(16000 TSRMLS_CC); + result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC); /* Will be freed in the mysqlnd_internal_free_result_contents() called @@ -1171,7 +1171,7 @@ CONN_SET_STATE(conn, CONN_FETCHING_DATA); - result->result_set_memory_pool = mysqlnd_mempool_create(16000 TSRMLS_CC); + result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC); result->lengths = mnd_ecalloc(result->field_count, sizeof(unsigned long)); ret = result->m.store_result_fetch_data(conn, result, result->meta, ps_protocol, to_cache TSRMLS_CC); Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h 2010-04-22 15:07:40 UTC (rev 298323) @@ -39,9 +39,6 @@ unsigned int arena_size; unsigned int free_size; - MYSQLND_MEMORY_POOL_CHUNK* free_chunk_list[MYSQLND_MEMORY_POOL_CHUNK_LIST_SIZE]; - unsigned int free_chunk_list_elements; - MYSQLND_MEMORY_POOL_CHUNK* (*get_chunk)(MYSQLND_MEMORY_POOL * pool, unsigned int size TSRMLS_DC); }; Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/php_mysqlnd.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/php_mysqlnd.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/php_mysqlnd.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -176,6 +176,7 @@ STD_PHP_INI_ENTRY("mysqlnd.net_read_buffer_size", "32768",PHP_INI_ALL, OnUpdateLong, net_read_buffer_size, zend_mysqlnd_globals, mysqlnd_globals) STD_PHP_INI_ENTRY("mysqlnd.net_read_timeout", "31536000", PHP_INI_SYSTEM, OnUpdateLong, net_read_timeout, zend_mysqlnd_globals, mysqlnd_globals) STD_PHP_INI_ENTRY("mysqlnd.log_mask", "0", PHP_INI_ALL, OnUpdateLong, log_mask, zend_mysqlnd_globals, mysqlnd_globals) + STD_PHP_INI_ENTRY("mysqlnd.mempool_default_size","16000", PHP_INI_ALL, OnUpdateLong, mempool_default_size, zend_mysqlnd_globals, mysqlnd_globals) PHP_INI_END() /* }}} */ Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd.h 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd.h 2010-04-22 15:07:40 UTC (rev 298323) @@ -277,6 +277,7 @@ long net_read_buffer_size; long log_mask; long net_read_timeout; + long mempool_default_size; ZEND_END_MODULE_GLOBALS(mysqlnd) ZEND_EXTERN_MODULE_GLOBALS(mysqlnd); Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_block_alloc.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_block_alloc.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_block_alloc.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -29,22 +29,6 @@ /* {{{ mysqlnd_mempool_free_chunk */ static void -mysqlnd_mempool_free_contents(MYSQLND_MEMORY_POOL * pool TSRMLS_DC) -{ - unsigned int i; - DBG_ENTER("mysqlnd_mempool_dtor"); - for (i = 0; i < pool->free_chunk_list_elements; i++) { - MYSQLND_MEMORY_POOL_CHUNK * chunk = pool->free_chunk_list[i]; - chunk->free_chunk(chunk, FALSE TSRMLS_CC); - } - - DBG_VOID_RETURN; -} -/* }}} */ - - -/* {{{ mysqlnd_mempool_free_chunk */ -static void mysqlnd_mempool_free_chunk(MYSQLND_MEMORY_POOL_CHUNK * chunk, zend_bool cache_it TSRMLS_DC) { MYSQLND_MEMORY_POOL * pool = chunk->pool; @@ -62,13 +46,7 @@ } else { mnd_free(chunk->ptr); } - if (cache_it && pool->free_chunk_list_elements < MYSQLND_MEMORY_POOL_CHUNK_LIST_SIZE) { - chunk->ptr = NULL; - pool->free_chunk_list[pool->free_chunk_list_elements++] = chunk; - } else { - /* We did not cache it -> free it */ - mnd_free(chunk); - } + mnd_free(chunk); DBG_VOID_RETURN; } /* }}} */ @@ -110,7 +88,7 @@ memcpy(new_ptr, chunk->ptr, chunk->size); chunk->ptr = new_ptr; chunk->size = size; - chunk->pool = NULL; /* now we have no pool memory */ + chunk->pool = NULL; /* now we have non-pool memory */ pool->refcount--; } } @@ -129,11 +107,7 @@ MYSQLND_MEMORY_POOL_CHUNK *chunk = NULL; DBG_ENTER("mysqlnd_mempool_get_chunk"); - if (pool->free_chunk_list_elements) { - chunk = pool->free_chunk_list[--pool->free_chunk_list_elements]; - } else { - chunk = mnd_malloc(sizeof(MYSQLND_MEMORY_POOL_CHUNK)); - } + chunk = mnd_malloc(sizeof(MYSQLND_MEMORY_POOL_CHUNK)); chunk->free_chunk = mysqlnd_mempool_free_chunk; chunk->resize_chunk = mysqlnd_mempool_resize_chunk; @@ -167,7 +141,7 @@ MYSQLND_MEMORY_POOL * ret = mnd_calloc(1, sizeof(MYSQLND_MEMORY_POOL)); DBG_ENTER("mysqlnd_mempool_create"); - ret->free_size = ret->arena_size = arena_size; + ret->free_size = ret->arena_size = arena_size ? arena_size : 0; ret->refcount = 0; /* OOM ? */ ret->arena = mnd_malloc(ret->arena_size); @@ -184,7 +158,6 @@ { DBG_ENTER("mysqlnd_mempool_destroy"); /* mnd_free will reference LOCK_access and might crash, depending on the caller...*/ - mysqlnd_mempool_free_contents(pool TSRMLS_CC); mnd_free(pool->arena); mnd_free(pool); DBG_VOID_RETURN; Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_ps.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_ps.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_ps.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -102,7 +102,7 @@ result->m.fetch_row = mysqlnd_fetch_stmt_row_buffered; result->m.fetch_lengths = NULL;/* makes no sense */ - result->result_set_memory_pool = mysqlnd_mempool_create(16000 TSRMLS_CC); + result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC); ret = result->m.store_result_fetch_data(conn, result, result->meta, TRUE, to_cache TSRMLS_CC); Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -856,7 +856,7 @@ } result->unbuf = mnd_ecalloc(1, sizeof(MYSQLND_RES_UNBUFFERED)); - result->result_set_memory_pool = mysqlnd_mempool_create(16000 TSRMLS_CC); + result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC); /* Will be freed in the mysqlnd_internal_free_result_contents() called @@ -1171,7 +1171,7 @@ CONN_SET_STATE(conn, CONN_FETCHING_DATA); - result->result_set_memory_pool = mysqlnd_mempool_create(16000 TSRMLS_CC); + result->result_set_memory_pool = mysqlnd_mempool_create(MYSQLND_G(mempool_default_size) TSRMLS_CC); result->lengths = mnd_ecalloc(result->field_count, sizeof(unsigned long)); ret = result->m.store_result_fetch_data(conn, result, result->meta, ps_protocol, to_cache TSRMLS_CC); Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2010-04-22 15:07:40 UTC (rev 298323) @@ -39,9 +39,6 @@ unsigned int arena_size; unsigned int free_size; - MYSQLND_MEMORY_POOL_CHUNK* free_chunk_list[MYSQLND_MEMORY_POOL_CHUNK_LIST_SIZE]; - unsigned int free_chunk_list_elements; - MYSQLND_MEMORY_POOL_CHUNK* (*get_chunk)(MYSQLND_MEMORY_POOL * pool, unsigned int size TSRMLS_DC); }; Modified: php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c 2010-04-22 15:03:17 UTC (rev 298322) +++ php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c 2010-04-22 15:07:40 UTC (rev 298323) @@ -176,6 +176,7 @@ STD_PHP_INI_ENTRY("mysqlnd.net_read_buffer_size", "32768",PHP_INI_ALL, OnUpdateLong, net_read_buffer_size, zend_mysqlnd_globals, mysqlnd_globals) STD_PHP_INI_ENTRY("mysqlnd.net_read_timeout", "31536000", PHP_INI_SYSTEM, OnUpdateLong, net_read_timeout, zend_mysqlnd_globals, mysqlnd_globals) STD_PHP_INI_ENTRY("mysqlnd.log_mask", "0", PHP_INI_ALL, OnUpdateLong, log_mask, zend_mysqlnd_globals, mysqlnd_globals) + STD_PHP_INI_ENTRY("mysqlnd.mempool_default_size","16000", PHP_INI_ALL, OnUpdateLong, mempool_default_size, zend_mysqlnd_globals, mysqlnd_globals) PHP_INI_END() /* }}} */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php