mirror of
https://github.com/php/php-src.git
synced 2024-09-24 03:17:26 +00:00
MFB: optimize zend_hash_init() with known hash table sizes.
This commit is contained in:
parent
0eaea000db
commit
25ac82bbb6
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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)) {
|
||||
|
Loading…
Reference in New Issue
Block a user