com php-src: Preallocate hash tables of required size: Zend/zend_builtin_functions.c Zend/zend_objects.c ext/opcache/Optimizer/compact_literals.c

From: Date: Wed, 03 Sep 2014 14:21:36 +0000
Subject: com php-src: Preallocate hash tables of required size: Zend/zend_builtin_functions.c Zend/zend_objects.c ext/opcache/Optimizer/compact_literals.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-81406@lists.php.net to get a copy of this message
Commit: 5c897aa7dab65c1aa5b9197086b3a610f0428fd0 Author: Dmitry Stogov <dmitry@zend.com> Wed, 3 Sep 2014 18:21:36 +0400 Parents: 6cceb54c091fce4f429fa2f0995892a8870e02ae Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=5c897aa7dab65c1aa5b9197086b3a610f0428fd0 Log: Preallocate hash tables of required size Changed paths: M Zend/zend_builtin_functions.c M Zend/zend_objects.c M ext/opcache/Optimizer/compact_literals.c Diff: diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 1f50ad4..f320585 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1062,7 +1062,7 @@ ZEND_FUNCTION(get_object_vars) zobj = Z_OBJ_P(obj); - array_init(return_value); + array_init_size(return_value, zend_hash_num_elements(properties)); ZEND_HASH_FOREACH_STR_KEY_VAL_IND(properties, key, value) { if (key) { diff --git a/Zend/zend_objects.c b/Zend/zend_objects..c index 9eea73d..40d37b3 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -154,7 +154,7 @@ ZEND_API void zend_objects_clone_members(zend_object *new_object, zend_object *o if (!new_object->properties) { ALLOC_HASHTABLE(new_object->properties); - zend_hash_init(new_object->properties, 8, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(new_object->properties, zend_hash_num_elements(old_object->properties), NULL, ZVAL_PTR_DTOR, 0); } ZEND_HASH_FOREACH_KEY_VAL(old_object->properties, num_key, key, prop) { diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 78f1d28..28e7a11 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -311,7 +311,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx /* Merge equal constants */ j = 0; cache_slots = 0; - zend_hash_init(&hash, 16, NULL, NULL, 0); + zend_hash_init(&hash, op_array->last_literal, NULL, NULL, 0); map = (int*)zend_arena_alloc(&ctx->arena, op_array->last_literal * sizeof(int)); memset(map, 0, op_array->last_literal * sizeof(int)); for (i = 0; i < op_array->last_literal; i++) {

« previous php.cvs (#81406) next »