Sen bool karşılaştırmalarda biraz ayarlamak isteyebilirsiniz.
($ Var) ("dize karşılaştırma" ile karşılaştırıldığında) bir bool karşılaştırma değilse bir general yapıyor.
if($abc['boolean_lookup'] == TRUE)
veya if($abc['boolean_lookup'] === TRUE)
ile tekrar testi deneyin (2 vs 3 eşittir işareti).
I made a test including the bool comparision, and the three-equals signs comparisions aswell.
And additionally a loop to do it 3 times, as the results may vary on a number of external factors.
Komut excution toplam süresi oldukça uzun ben $how_many = 5000000;
için $how_many = 3000000;
lowereed ettik bu yoldur yana
İşte son yazısıdır:
<?php
function DoTest(){
$how_many = 3000000;
$counter1 = 0;
$counter2 = 0;
$counter3 = 0;
$counter4 = 0;
$counter5 = 0;
$counter6 = 0;
$abc = array('boolean_lookup'=>TRUE, 'string_lookup'=>'something_else');
$start = microtime(true);
for($i = 0; $i < $how_many; $i++){
if($abc['boolean_lookup']){
$counter1++;
}
}
echo "GENERAL-IF ON A BOOL: ", (microtime(true) - $start)*10, "<br />\n";
$start = microtime(true);
for($i = 0; $i < $how_many; $i++){
if($abc['string_lookup']){
$counter2++;
}
}
echo "GENERAL-IF ON A STRING: ", (microtime(true) - $start)*10, "<br />\n";
$start = microtime(true);
for($i = 0; $i < $how_many; $i++){
if($abc['boolean_lookup'] == TRUE){
$counter3++;
}
}
echo "TWO-EQUALL-IF ON A BOOL : ", (microtime(true) - $start)*10, "<br />\n";
$start = microtime(true);
for($i = 0; $i < $how_many; $i++){
if($abc['string_lookup'] == 'something_else'){
$counter4++;
}
}
echo "TWO-EQUALL-IF ON A STRING : ", (microtime(true) - $start)*10, "<br />\n";
$start = microtime(true);
for($i = 0; $i < $how_many; $i++){
if($abc['boolean_lookup'] === TRUE){
$counter5++;
}
}
echo "THREE-EQUALL-IF ON A BOOL : ", (microtime(true) - $start)*10, "<br />\n";
$start = microtime(true);
for($i = 0; $i < $how_many; $i++){
if($abc['string_lookup'] === 'something_else'){
$counter6++;
}
}
echo "THREE-EQUALL-IF ON A STRING : ", (microtime(true) - $start)*10, "<br />\n";
}
$number_of_tests = 3;
for($i = 0; $i < $number_of_tests; $i++){
echo "<br />\n<br />\n== Test #".($i+1)."<br />\n";
DoTest();
}
?>
Ve sonuç:
== Test #1
GENERAL-IF ON A BOOL: 7.61245965958
GENERAL-IF ON A STRING: 7.49043941498
TWO-EQUALL-IF ON A BOOL : 8.92991065979
TWO-EQUALL-IF ON A STRING : 10.3996396065
THREE-EQUALL-IF ON A BOOL : 8.02039146423
THREE-EQUALL-IF ON A STRING : 9.25590991974
== Test #2
GENERAL-IF ON A BOOL: 7.74684906006
GENERAL-IF ON A STRING: 7.58201122284
TWO-EQUALL-IF ON A BOOL : 8.90240907669
TWO-EQUALL-IF ON A STRING : 10.2967596054
THREE-EQUALL-IF ON A BOOL : 8.08442115784
THREE-EQUALL-IF ON A STRING : 9.2577290535
== Test #3
GENERAL-IF ON A BOOL: 7.63362884521
GENERAL-IF ON A STRING: 7.5103187561
TWO-EQUALL-IF ON A BOOL : 8.92127037048
TWO-EQUALL-IF ON A STRING : 10.4210495949
THREE-EQUALL-IF ON A BOOL : 8.02319049835
THREE-EQUALL-IF ON A STRING : 9.25379991531
Yani, benim sonuç (eşittir işareti ile) karSIlaStIrmasInI yaparken bool kazanan, şüphesiz olmasıdır.
Ancak, basit bir düz genel yaparken dize bool sonra önceki döndürür () deyimi eğer.
Dönen bir fark olup olmadığını başka bir gün ben kontrol edebilirsiniz doğru veya yanlış (yani o tam tersini algılamak için daha uzun sürer?)
Greetings,
Krinkle