Archive for May, 2010
PHP – Dynamic Type Upconverting
Just because PHP allows you to do something, doesn’t mean that it is the best thing to do. For example, PHP will automatically convert single word strings (non-quote/apostrophe delimited) into an actual string if required.
<?php $arr = array (); for ( $x = 0; $x < 1000000; $x++ ) { $arr [ foo ] = 'bar'; } ?>
In this case, PHP will automatically convert foo to the string ‘foo’. However, this up conversion doesn’t come without a cost. For example, when timing the use of this script, the following are the results:
$ time php test.php real 0m1.641s user 0m1.424s sys 0m0.044s
However, when running the following script and not forcing it to up convert, the results are extremely different.
<?php $arr = array (); for ( $x = 0; $x < 1000000; $x++ ) { $arr [ 'foo' ] = 'bar'; } ?>
In this case, the word ‘foo’ is already pre-defined as a string, so no up conversion is required. The time for this is as follows:
$ time php test.php real 0m0.467s user 0m0.292s sys 0m0.052s
As you can see, by including the quotes and telling PHP that it actually is a string, you can potentially reduce the execution time for your PHP scripts.
Keep this in mind when using the associative arrays in PHP.