La grande question… Qu’elle est la méthode la plus rapide pour faire du conditionnel en php. Le test suivant parle de lui même, pour des switch et if simples (avec une seule condition) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
/** * Test for simple switch **/ $switch_start = microtime(); switch ($_GET) { case 'value 1': # code ... break; case 'value 2': # code ... break; case 'value 3': # code ... break; case 'value 4': # code ... break; case 'value 5': # code ... break; case 'value 6': # code ... break; case 'value 7': # code ... break; default: # code ... break; } $switch_end = microtime(); $switch_time = $switch_end - $switch_start; $switch_time = array_sum( explode( ' ' , $switch_time ) ); /** * Test for simple IF **/ $if_start = microtime(); if ($_GET == 'value 1') { # code... } elseif ($_GET == 'value 2') { # code... } elseif ($_GET == 'value 3') { # code... } elseif ($_GET == 'value 4') { # code... } elseif ($_GET == 'value 5') { # code... } elseif ($_GET == 'value 6') { # code... } elseif ($_GET == 'value 7') { # code... } else { # code... } $if_end = microtime(); $if_time = $if_end - $if_start; $if_time = array_sum( explode( ' ' , $if_time ) ); /** * Display results **/ echo "<pre>"; echo "Switch result =t" . number_format($switch_time, 20) . " sec n"; echo "If result =t" . number_format($if_time, 20) . " sec n"; echo "</pre>"; |
Voici quelques résultats :
1 2 3 4 5 6 7 8 |
Switch result = 0.00000999999999995450 sec If result = 0.00000300000000008630 sec Switch result = 0.00001000000000006600 sec If result = 0.00000300000000008630 sec Switch result = 0.00000900000000003680 sec If result = 0.00000300000000008630 sec |
Cas particulier du Switch (voir la suite)