Konstantin Rozinov wrote:
Hey guys,
Some more questions.
1. Is there a significant speed difference between the equal operator
(==) and the identical operator (===)? Should I even be concerned
about this? For example, if I know a variable will be of type INT
100% of the time, and I pass it to a function which expects the
variable to an INT, should I use even use === inside the function when
doing comparisons? Or is using === in this case just a waste of time?
2. What's the best way to cast? For example, is it best to use (int)
$variable or intval($variable)?
Questions like this amuse me.
Not surprisingly, === is faster. If the two compared values are both
INT, it's faster but not by much.
If the two compared values are not the same type and one is a string,
then equals (==) takes twice as long.
Unless you are running a huge number of comparisons, it shouldn't make
much of a difference.
Here is a blog entry about micro-optimization:
http://www.codinghorror.com/blog/archives/001218.html
And here is a script to test it for yourself:
<?php
// Rolan Yang - ro...@omnistep.com
$a = "42"; // change these to different types for fun
$b = 42; // change these to different types for fun
$i = 5000000; // iterations
print "== vs === speed test\n\n";
print "a=".gettype($a)."\n";
print "b=".gettype($b)."\n\n";
$s=getmicrotime();
print "Equal (==) \nstart:$s\n";
for ($x=0;$x<$i;$x++) {
if ($a==$b) {}
}
$e=getmicrotime();
print "end:$e\nTotal:".($e-$s)."\n\n";
$s=getmicrotime();
print "Identical (===) \nstart:$s\n";
for ($x=0;$x<$i;$x++) {
if ($a===$b) {}
}
$e=getmicrotime();
print "end:$e\nTotal:".($e-$s)."\n";
function getmicrotime() {
list($x,$y)=explode(' ',microtime());
return ($x+$y);
}
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk
http://www.nyphp.org/show_participation.php