рд╣рд╛рд░реНрдб рд▓реВрдкреНрд╕ рдмрд╛рдпрдкрд╛рд╕рд┐рдВрдЧ рд▓реВрдкреНрд╕

рдХрдбрд╝реА рдХрдбрд╝реА

рдПрдХ рдХрдбрд╝реА рдПрдХ рдЪрд░ рд╣реИ рдЬреЛ рджреВрд╕рд░реЗ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╛рдп рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд░реНрдб рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реЗ рдкрд╣рд▓реЗ "&" рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдХрдбрд╝реА рдХрдбрд╝реА рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

$a = 1 ; //   $b = &$a ; // $b   $a echo $b ; // 1 


рд╕рдмреНрдЬрд╝ рджреНрд╡рд╛рд░рд╛

рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ: рдЬрд┐рд╕ рд╡рд╕реНрддреБ рдХреЛ рд╣рдо рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╕реЗ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдЪрдХреНрд░ рдХреА рдорджрдж рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрдХреНрд░ рдХрд╛ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдпрджрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдмрд╛рд░-рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЛ рдФрд░ рдмрдврд╝рд╛ рджреЗрдЧрд╛ред

рдПрдХ рд╕рд░рдгреА-рдЧреБрдЪреНрдЫрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрдареЛрд░ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╣реИрд╢рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдЕрдкрдиреА рдЕрдиреВрдареА рдХреБрдВрдЬреА рдХреЗ рддрд╣рдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ:

рд░реЗрдЦрд╛рдВрдХрди

рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдпрджрд┐ рдЖрдк рдХреЛрдб рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрдврд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ

1. рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд░рдгреА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред

 class Main { public $List = Array(); //     public $Links = Array(); //      public $Count = NULL ; //    public function Fill() //   { for( $i=0; $i < $this->Count; $i++ ) { $Obj = &$this->List[]; //    $Obj = new Obj($i); $Key = md5($i); $this->Links[$Key] = &$Obj; //     } } } class Obj //   { public $Id = NULL; public function __construct( $Id ) { $this->Id = $Id; } } $Main = new Main(); $Main->Count = 1000; //  ,      $Main->Fill(); /*   , print_r( $Main->List ): Array ( [0] => Obj Object ( [Id] => 0 ) [1] => Obj Object ( [Id] => 1 ) [2] => Obj Object ( [Id] => 2 ) ... ) */ 

1. рд╣рдо рдЖрдИрдбреА (рд▓реВрдк, рдФрд░ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рддрддреНрд╡ рдЦреЛрдЬ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 class Main { ... public function Search_Cycle( $Id ) { $Limit = count( $this->List ); for( $i=0; $i < $Limit; $i++ ) if( $this->List[$i]->Id == $Id ) return $this->List[$i]; return NULL; } public function Search_Link( $Id ) { $Key = md5($i); if( isset( $this->Links[$Key] ) == TRUE ) return $this->Links[$Key]; return NULL; } ... } 


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рддрддреНрд╡ рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЙрддреНрдкрдиреНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЙрд╕ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рднреА рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдПрдЧрд╛ред

3. рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ

 ... $Count = 100 ; //        //     10  for( $t=0; $t < $Main->Count; $t++ ) { echo 'Test with ID: ' . $t . ' - started.'; //   ,      $Start = microtime( TRUE ); for( $i=0; $i < $Count; $i++ ) $Main->Search_Cycle( $t ); $Time = round( microtime( TRUE ) - $Start , 4 ); echo '<br />Search_Cycle() time: ' . $Time; //   ,      $Start = microtime( TRUE ); for( $i=0; $i < $Count; $i++ ) $Main->Search_Link( $t ); $Time = round( microtime( TRUE ) - $Start , 4 ); echo '<br /> Search_Link() time: ' . $Time; echo '<br /><br />'; } 


рдпрд╣ рдХреЛрдб рдЗрди рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд рд╕рд░рдгреА ( $ рдЧрдгрдирд╛ рд╕рдордп) рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред


рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб

рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
 class Main { public $List = Array(); //     public $Links = Array(); //      public $Count = NULL ; //    public function Fill() //   { for( $i=0; $i < $this->Count; $i++ ) { $Obj = &$this->List[]; //    $Obj = new Obj($i); $Key = md5($i); $this->Links[$Key] = &$Obj; //     } } public function Search_Cycle( $Id ) { $Limit = count( $this->List ); for( $i=0; $i < $Limit; $i++ ) if( $this->List[$i]->Id == $Id ) return $this->List[$i]; return NULL; } public function Search_Link( $Id ) { $Key = md5($Id); if( isset( $this->Links[$Key] ) == TRUE ) return $this->Links[$Key]; return NULL; } } class Obj //   { public $Id = NULL; public function __construct( $Id ) { $this->Id = $Id; } } $Main = new Main(); $Main->Count = 1000; //  ,      $Main->Fill(); /*   , print_r( $Main->List ): Array ( [0] => Obj Object ( [Id] => 0 ) [1] => Obj Object ( [Id] => 1 ) [2] => Obj Object ( [Id] => 2 ) ... ) */ $Count = 100 ; //        //     10  for( $t=0; $t < $Main->Count; $t++ ) { echo 'Test with ID: ' . $t . ' - started.'; //   ,      $Start = microtime( TRUE ); for( $i=0; $i < $Count; $i++ ) $Main->Search_Cycle( $t ); $Time = round( microtime( TRUE ) - $Start , 4 ); echo '<br />Search_Cycle() time: ' . $Time; //   ,      $Start = microtime( TRUE ); for( $i=0; $i < $Count; $i++ ) $Main->Search_Link( $t ); $Time = round( microtime( TRUE ) - $Start , 4 ); echo '<br /> Search_Link() time: ' . $Time; echo '<br /><br />'; } 


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдХрд░, рдкрд░рд┐рдгрд╛рдо рдЙрд╕ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рддрддреНрд╡ рдХреА рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ 100 рдмрд╛рд░ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдиреАрдЪреЗ рджреЗрдЦреЗ рдЧрдП рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЛ рд╕рдмрд╕реЗ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реМ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд░рд┐рдгрд╛рдо:

рд░реЗрдЦрд╛рдВрдХрди рдкрд░ - рдЦреЛрдЬ рдХреА рдЧрддрд┐ред рдХреНрд╖реИрддрд┐рдЬ - рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рдХреА рдЖрдИрдбреАред

рд╢реЗрдбреНрдпреВрд▓ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдПрдХ рдЫрд╡рд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЯреНрд╡рд┐рдЪ-рдкреЙрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдлрд╝рдВрдХреНрд╢рди рдЦреЛрдЬреЗрдВ Search_Cycle () - рдПрдХ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред


Search_Link_Cycle () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ - рд╣рд╛рд░реНрдб рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред


рдЗрди рдЧреНрд░рд╛рдлреЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЦреЛрдЬ рд▓рд┐рдВрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 6 рд╕реЗ рдХрдо (0.002 рд╕реЗрдХрдВрдбред рдмрдирд╛рдо 0.004 рд╕реЗрдХрдВрдб) рд╣реИред

рдкрд░рд┐рдгрд╛рдо

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рд╛рд░реНрдб рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдФрд░ рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рд░рдгреА рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд▓реВрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЦреЛрдЬ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрдВрддрд░ рдмрд╕ рдирдЧрдгреНрдп рд╣реИ)ред

рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдЪреБрдирдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ, рдЖрдкрдХреЛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд▓рд╛рдн рд╣реЛрдЧрд╛ рдФрд░ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рддреБрд░рдВрдд рдПрдХ рд╡рд╕реНрддреБ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред

Source: https://habr.com/ru/post/In166601/


All Articles