array_key_exists performance is poor for &$array
| Bug #37563 | array_key_exists performance is poor for &$array | ||||
|---|---|---|---|---|---|
| Submitted: | 2006-05-23 17:16 UTC | Modified: | 2006-05-25 22:39 UTC | ||
| From: | bugs dot php dot net at nanonanonano dot net | Assigned: | ilia (profile) | ||
| Status: | Closed | Package: | Performance problem | ||
| PHP Version: | 5CVS-2006-05-23 (snap) | OS: | Linux | ||
| Private report: | No | CVE-ID: | None | ||
[2006-05-23 17:16 UTC] 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
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2006-05-24 23:14 UTC] iliaa@php.net
[2006-05-25 10:15 UTC] bugs dot php dot net at nanonanonano dot net
[2006-05-25 22:39 UTC] iliaa@php.net