|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2020-11-10 15:57 UTC] danack@php.net
-Status: Open
+Status: Not a bug
[2020-11-10 15:57 UTC] danack@php.net
[2020-11-10 16:04 UTC] nikic@php.net
[2020-11-10 17:39 UTC] gilperon at gmail dot com
[2020-11-11 19:29 UTC] a at b dot c dot de
[2020-11-11 19:57 UTC] gilperon at gmail dot com
[2020-11-11 19:58 UTC] fuckoff at gmail dot com
-: gilperon at gmail dot com
+: fuckoff at gmail dot com
[2020-11-11 19:58 UTC] fuckoff at gmail dot com
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Dec 20 07:00:01 2025 UTC |
Description: ------------ Please run the test script. In my computer it outputs this: 1-> 0.0002131462097168 2-> 0.02832914352417 It's a 10.000% difference (100 * 0.0002 / 0.02) when using 2 supposedly very similar functions, with only a small difference that one allows a callback to be used. I really need to use `array_intersect_ukey` but the performance hit is huge. I tried creating my own PHP implementation of `array_intersect_ukey` and it runs a lot faster, but still is much slower than `array_intersect_key` and I really need something similar to `array_intersect_key` in terms of speed (it can even be 10x slower, but not 100x or worse. Test script: --------------- <?php $a = array(); $b = array(); for ($i=0;$i<1000;$i++) { $a[$i] = true; $b[2*$i + 1] = true; } $z = microtime(true); for ($i=0;$i<10;$i++) { $temp = array_intersect_key($a,$b); } echo "\n 1-> " . (microtime(true) - $z); $z = microtime(true); for ($i=0;$i<10;$i++) { $temp = array_intersect_ukey($a,$b,function($key1,$key2) { if ($key1 === $key2) { return 0; } else{ return $key2 - $key1; } }); } echo "\n 2-> " . (microtime(true) - $z); ?> Expected result: ---------------- Both functions should run at similar speeds. Actual result: -------------- One function runs 10.000% slower than the other.