ID: 37563 Updated by: [EMAIL PROTECTED] Reported By: bugs dot php dot net at nanonanonano dot net -Status: Open +Status: Closed Bug Type: Performance problem Operating System: Linux PHP Version: 5CVS-2006-05-23 (snap) Assigned To: ilia New Comment:
This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. it cannot be back ported to PHP4 as the fix relies on PHP 5 only code. Previous Comments: ------------------------------------------------------------------------ [2006-05-25 10:15:15] bugs dot php dot net at nanonanonano dot net Thanks for the prompt attention. Just one last thing -- the fix only went into 5CVS and as noted in the original bug report the problem exists in 4CVS too. Any chance of backporting the fix? # test with 4CVS (php4-STABLE-200605250830) Test with no refs: 0.0027539730072021 Test with a ref to the array: 0.89111185073853 Test with a ref to the array and pass by ref: 0.0028078556060791 Thanks in advance! ------------------------------------------------------------------------ [2006-05-24 23:14:42] [EMAIL PROTECTED] This bug has been fixed in CVS. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. Thank you for the report, and for helping us make PHP better. ------------------------------------------------------------------------ [2006-05-24 20:07:02] [EMAIL PROTECTED] Ilia, could you plz have a look at it? ------------------------------------------------------------------------ [2006-05-23 17:16:29] bugs dot php dot net at nanonanonano dot net Description: ------------ If there is a reference taken to an array ($b =& $a) then the performance of array_key_exists($foo, $a) drops off enormously unless array_key_exists($foo, &$a) is used. (Note this is identical to #30295 which is marked as fixed in CVS but doesn't appear to be fixed at all: it is found in both 4CVS and 5CVS) Reproduce code: --------------- Based on the code in bug #30295: http://pastebin.com/733286 Expected result: ---------------- Time for the following operations should be approximately the same: array_key_exists($i, $a); $b =& $a; array_key_exists($i, $a); $b =& $a; array_key_exists($i, &$a); Actual result: -------------- Time for $b =& $a; array_key_exists($i, $a); is significantly greater than for the others. Sample times from running the reproduce code: Test with no refs: 0.0012528896331787 Test with a ref to the array: 0.78344106674194 Test with a ref to the array and pass by ref: 0.0019340515136719 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=37563&edit=1