PHP – Optimization Tricks V

Another common operation in PHP scripts is array searching. This process can be quite slow as regular search mechanism such as in_array() or manuall implementation work by itterating through the entire array. This can be quite a performance hit if you are searching through a large array or need to perform the searches frequently.

So what can you do?

Well, you can do a trick that relies upon the way that Zend Engine stores array data. Internally arrays are stored inside hash tables when they array element (key) is the key of the hashtables used to find the data and result is the value associated with that key. Since hashtable lookups are quite fast, you can simplify array searching by making the data you intend to search through the key of the array, then searching for the data is as simple as $value = isset($foo[$bar] )) ? $foo[$bar] : NULL;.

This searching mechanism is way faster then manual array iteration, even though having string keys maybe more memory intensive then using simple numeric keys.

Ex.

$keys = array(“apples”, “oranges”, “mangoes”, “tomatoes”, “pickles”);
if (in_array(‘mangoes’, $keys)) { … }

vs

$keys = array(“apples” => 1, “oranges” => 1, “mangoes” => 1, “tomatoes” => 1, “pickles” => 1);
if (isset($keys[‘mangoes’] )) { … }

The bottom search mechanism is roughly 3 times faster.

Leave a Reply

Your email address will not be published. Required fields are marked *

*