From 25ac82bbb63a0f38fa674e4bcf758c31546f0d0d Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Tue, 3 Oct 2006 17:45:16 +0000 Subject: [PATCH] MFB: optimize zend_hash_init() with known hash table sizes. --- ext/standard/array.c | 4 ++-- ext/standard/streamsfuncs.c | 4 ++-- ext/standard/string.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index b5e1617945..073f88cbd5 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3073,7 +3073,7 @@ static void php_array_intersect(INTERNAL_FUNCTION_PARAMETERS, int behavior, int zval *tmp; ALLOC_HASHTABLE(ht); - zend_hash_init(ht, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(ht, zend_hash_num_elements(return_value->value.ht), NULL, ZVAL_PTR_DTOR, 0); zend_hash_copy(ht, return_value->value.ht, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); return_value->value.ht = ht; } @@ -3449,7 +3449,7 @@ static void php_array_diff(INTERNAL_FUNCTION_PARAMETERS, int behavior, int data_ zval *tmp; ALLOC_HASHTABLE(ht); - zend_hash_init(ht, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(ht, zend_hash_num_elements(return_value->value.ht), NULL, ZVAL_PTR_DTOR, 0); zend_hash_copy(ht, return_value->value.ht, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); return_value->value.ht = ht; } diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index 6460b92e40..808cfc0baa 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -660,7 +660,7 @@ static int stream_array_from_fd_set(zval *stream_array, fd_set *fds TSRMLS_DC) return 0; } ALLOC_HASHTABLE(new_hash); - zend_hash_init(new_hash, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(new_hash, zend_hash_num_elements(Z_ARRVAL_P(stream_array)), NULL, ZVAL_PTR_DTOR, 0); for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(stream_array)); zend_hash_get_current_data(Z_ARRVAL_P(stream_array), (void **) &elem) == SUCCESS; @@ -708,7 +708,7 @@ static int stream_array_emulate_read_fd_set(zval *stream_array TSRMLS_DC) return 0; } ALLOC_HASHTABLE(new_hash); - zend_hash_init(new_hash, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(new_hash, zend_hash_num_elements(Z_ARRVAL_P(stream_array)), NULL, ZVAL_PTR_DTOR, 0); for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(stream_array)); zend_hash_get_current_data(Z_ARRVAL_P(stream_array), (void **) &elem) == SUCCESS; diff --git a/ext/standard/string.c b/ext/standard/string.c index 75279e1a36..903cd525e0 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -3836,7 +3836,7 @@ static HashTable* php_u_strtr_array_prepare_hashtable(HashTable *hash, int *minl int maxlen = 0, len; zval ctmp; - zend_hash_init(tmp_hash, 0, NULL, NULL, 0); + zend_hash_init(tmp_hash, zend_hash_num_elements(hash), NULL, NULL, 0); zend_hash_internal_pointer_reset_ex(hash, &hpos); while (zend_hash_get_current_data_ex(hash, (void **)&entry, &hpos) == SUCCESS) { switch (zend_hash_get_current_key_ex(hash, &string_key, &string_key_len, &num_key, 0, &hpos)) { -- 2.40.0