Optimizing PHP code

Loops: for and while
Test code for loops:
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 500001;
$time_start microtime_float();

for(
$i=0;$i<$nombre_boucle;$i++)
{
}

$time_end microtime_float();
$duration_for_loop $time_end $time_start;)
?>


Test code while loops:
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 500001;
$i 0;
$boucle_active true;

$time_start microtime_float();

while (
$boucle_active)
{
    if(
$i>=$nombre_boucle){$boucle_active=false;}
    
$i++;
}

$time_end microtime_float();
$duration_while_loop $time_end $time_start;
?>


Results for 500000 loops of 5 tests:
For loop:
0,0396s
0,0396s
0,0404s
0,0407s
0,0386s
Mean = 0,0398s

While loop:
0,0443s
0,0435s
0,0441s
0,0446s
0,0439s
Mean = 0,0441s

Conclusion :
For loop is 10% faster than the While loop in this example.

Assigning variables: 'x' and 'x':

Code testing variable 'x':
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 500001;
$time_start microtime_float();

for(
$i=0;$i<$nombre_boucle;$i++)
{
 
$ma_variable 'blablabla';
}

$time_end microtime_float();
$duration_variable_01 $time_end $time_start $duration_for_loop;
?>


Code testing variable "x":
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 500001;
$time_start microtime_float();

for(
$i=0;$i<$nombre_boucle;$i++)
{
 
$ma_variable "blablabla";
}

$time_end microtime_float();
$duration_variable_02 $time_end $time_start $duration_for_loop;
?>


Results for 500000 loops of 5 tests:
Assignment of variables 'x':
0,0436s
0,0462s
0,0424s
0,0418s
0,0459s
Mean = 0,0440s

Assignment of variables "x":
0,0452s
0,0435s
0,0415s
0,0419s
0,0466s
Mean = 0,0438s

Conclusion :
The assignment of variables "x" in a performance equivalent to the assignment of variables 'x'.

Reading a text file: file_get_contents and fopen-fget:
This test will be conducted in 2 parts: reading a text file of one line and reading a text file of 10 lines.

Test code for reading a text file with a line file_get_contents:
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 10000;
$time_start microtime_float();
$nom_fichier "montexte.txt";

for(
$i=0;$i<$nombre_boucle;$i++)
{
 
$ma_variable file_get_contents($nom_fichier);
}

$time_end microtime_float();
$duration_file_get_contents $time_end $time_start $duration_for_loop;
?>


Test code for reading a text file with a line-fopen fget:
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 10000;
$ma_variable "";
$time_start microtime_float();
$nom_fichier "montexte.txt";

for(
$i=0;$i<$nombre_boucle;$i++)
{
  
$fp fopen($nom_fichier,"r");
  while(!
feof($fp))
  {
      
$ma_variable .= fgets($fp,4096) . "n";
  }
  
fclose($fp);
}

$time_end microtime_float();
$duration_fopen $time_end $time_start $duration_for_loop;
?>


Test code for reading a text file of 10 lines with file_get_contents:
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 10000;
$time_start microtime_float();
$nom_fichier "montexte10.txt";

for(
$i=0;$i<$nombre_boucle;$i++)
{
 
$ma_variable file_get_contents($nom_fichier);
}

$time_end microtime_float();
$duration_file_get_contents_all $time_end $time_start $duration_for_loop;
?>


Test code for reading a text file of 10 lines with fopen-fget :
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 10000;
$ma_variable "";
$time_start microtime_float();
$nom_fichier "montexte10.txt";

for(
$i=0;$i<$nombre_boucle;$i++)
{
  
$fp fopen($nom_fichier,"r");
  while(!
feof($fp))
  {
      
$ma_variable .= fgets($fp,4096) . "n";
  }
  
fclose($fp);
}

$time_end microtime_float();
$duration_fopen_all $time_end $time_start $duration_for_loop;
?>


Results for 10000 loops of 5 tests:
Reading a text file of one line with file_get_contents:
0,5492s
0,5503s
0,5395s
0,5420s
0,5610s
Mean = 0,5484s

Reading a text file of one line with fopen-fget :
0,5131s
0,5070s
0,5063s
0,5039s
0,5162s
Mean = 0,5093s

Reading a text file of 10 lines with file_get_contents:
0,5525s
0,5466s
0,5499s
0,5463s
0,5559s
Mean = 0,5502s

Reading a text file of 10 lines with fopen-fget:
0,6697s
0,6527s
0,6522s
0,6523s
0,6530s
Mean = 0,6560s

Conclusion :
When reading a text file of one line, the combination fopen-fget is more efficient than 7% as file_get_contents but when reading a text file of 10 lines, file_get_contents is more efficient than 16% as the combination function fopen-fget.

Infuance variables in the code:
This test is to see the difference between the definition of several cons a single variable to get the same result.

Code multivariate:
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 500001;

$time_start microtime_float();

for(
$i=0;$i<$nombre_boucle;$i++)
{
    
$val01 5;
    
$val02 3;
    
$val03 6;
    
$val04 2;
    
$val05 9;
    
    
$val06 $val01*$val02;
    
$val07 $val06/$val03;
    
$val08 $val07^$val05;
    
$val09 $val08/$val04;
    
$val10 $val09^$val07;
}

$time_end microtime_float();
$duration_val01 $time_end $time_start;
?>


Test code to a variable:
<?php
function microtime_float(){
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);


$nombre_boucle 500001;

$time_start microtime_float();

for(
$i=0;$i<$nombre_boucle;$i++)
{
    
$val10 = (((5*3/6)^9)/2)^(5*3/6);
}

$time_end microtime_float();
$duration_val01 $time_end $time_start;
?>


Results for 50000 loops of 5 tests:
Multivariate Testing:
0,2962s
0,2921s
0,2943s
0,2985s
0,2941s
Mean = 0,2950s

Testing a variable:
0,1650s
0,1621s
0,1653s
0,1659s
0,1660s
Mean = 0,1648s

Conclusion :
The test shows a huge loss of performance when using the use of several variables, calculating a value in a single variable is faster than 44%.