рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВрдиреЗ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА, рдЕрдм рд╣рдо рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
PHP рд╕реНрддрд░ рдкрд░ рд╕рд░рдгрд┐рдпрд╛рдБ рдХреНрдпрд╛ рд╣реИрдВ?
PHP рд╕реНрддрд░ рдкрд░, рдПрдХ рд╕рд░рдгреА рдПрдХ рдСрд░реНрдбрд░ рдХреА рдЧрдИ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдкрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, PHP рдЗрди рджреЛрдиреЛрдВ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рддреА рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдПрдХ рддрд░рдл рдирд┐рдХрд▓рддрд╛ рд╣реИ, рджреВрд╕рд░реА рддрд░рдл рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдВрдердиреА рдлреЗрд░рд╛рд░рд╛ рдиреЗ рдЗрд╕реЗ рд░рдЦрд╛ рд╣реИ:
PHP рд╕рд░рдгрд┐рдпрд╛рдБ рдПрдХ рдорд╣рд╛рди рдПрдХ рдЖрдХрд╛рд░-рдлрд┐рдЯ-рд╕рднреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рднреА рдПрдХ рдЖрдХрд╛рд░-рдлрд┐рдЯ-рд╕рднреА <рдХреБрдЫ рднреА> рдХреА рддрд░рд╣, рдЬреИрдХ-рдСрдл-рдСрд▓-рдЯреНрд░реЗрдбреЛрдВ рдХрд╛ рдорддрд▓рдм рдЖрдорддреМрд░ рдкрд░ рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдкрддреНрд░ рдХрд╛ рд▓рд┐рдВрдХ

(рдЪрд┐рддреНрд░ рдмрд╛рд▓реНрдЯреА рдХреЗ рд╕рд╛рде рдПрдХ рд╣реИрд╢рдЯреЗрдмрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд╡реАред рд╡рд╛рд╕рдВрддреЛрд╕реЗрд╡)
рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдЪрд▓реЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдЦрдкрдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдФрд░ рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗ:
// time.php $ar = array(); $t = 0; for ($i = 0; $i < 9000; ++$i) { $t = microtime(1); $ar[] = 1; echo $i . ":" . (int)((microtime(1) - $t) * 100000000) . "\n"; } // memory.php $ar = array(); $m = 0; for ($i = 0; $i < 9000; ++$i) { $m = memory_get_usage(); $ar[] = 1; echo $i . ":" . (memory_get_usage() - $m) . "\n"; }
рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
php time.php > time
рдФрд░
php memory.php > memory
, рдФрд░ рдЙрди рдкрд░ рд░реЗрдЦрд╛рдВрдХрди
php memory.php > memory
, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╣реИ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рджреЗрдЦрддреЗ рд╣реИрдВ (рд╕рдордп рдбреЗрдЯрд╛ рдХреЛ рдХрдИ рдмрд╛рд░ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЧреНрд░рд╛рдл рдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкрдВрдкреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред

(рдПрдХреНрд╕ рдЕрдХреНрд╖ рдкрд░ - рд╕рд░рдгреА рдореЗрдВ рдПрд▓-рдЯреВрд╡ рдХреА рд╕рдВрдЦреНрдпрд╛)
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЙрдкрднреЛрдЧ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рдХреВрджрддреЗ рд╣реИрдВ, рдФрд░ рдпреЗ рдХреВрдж рдПрдХ рд╣реА рдХреНрд╖рдг рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕реА рд╕реНрддрд░ рдкрд░ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░), рдЧреИрд░-рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рд░рдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рд╕реА рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдлрд┐рд░ рдЗрд╕реЗ PHP рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЪрд╛рд░реНрдЯ рдкрд░ рдЙрди рдЬрдВрдк рдХреЛ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдЬрдм рдЖрдк рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ PHP рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рд░рдгреА рдХреЛ рднрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдЖрдк рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЖрдХрд╛рд░ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рдмрд╛рд░ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕рд░рдгреА рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, PHP рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирдХ
рд╣реИрд╢ рдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рд╣реИрд╢ рдЯреЗрдмрд▓ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдорд╛рдиреЛрдВ (рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ), рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ (рд╕рд░рдгреА рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ
current()
рд░рд┐рдЯрд░реНрди), рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рд░рдгреА рдмрдХреЗрдЯ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ (рдмрд╛рдж рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ), рдФрд░ рдХреБрдЫ рдФрд░ред
рдХреНрдпреЛрдВ
рд╣рдорд╛рд░реЗ рд▓рд┐рдП
рдмрд╛рд▓реНрдЯреА рдХреА рдЬрд░реВрд░рдд рд╣реИ
рдФрд░ рдХрд╣рд╛рдБ
рд╣рдорд╛рд░реЗ рд▓рд┐рдП
рдЙрдиреНрд╣реЗрдВ рд▓реЗрдЯрд╛рдУ
рд╣рд╢ рдЯреЗрдмрд▓ рдореЗрдВ рджреЛ рдореБрдЦреНрдп рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реИрдВ, рдкрд╣рд▓реА рд╣реИрд╢ рдЯреЗрдмрд▓ рд╣реИ рдФрд░ рджреВрд╕рд░реА рд╣реИ рдмрдХреЗрдЯ (рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╛рд▓реНрдЯреА, рддрд╛рдХрд┐ рдКрдм рди рд╣реЛ)ред
рдмрд╛рд▓реНрдЯрд┐рдпрд╛рдБ рд╕реНрд╡рдпрдВ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЪрд┐рдд рдХрд░рддреА рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреА рдЕрдкрдиреА рдмрд╛рд▓реНрдЯреА рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореВрд▓ рдХреБрдВрдЬреА рдХреЛ рдмрд╛рд▓реНрдЯреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд▓реЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рдмрд╛рд▓реНрдЯреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЙрдиреНрд╣реЗрдВ рд╕рд░рдгреА рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PHP рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдЖрдк рдЪрд╛рд╣реЗрдВ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ), рдФрд░, рдлрд┐рд░ рд╕реЗ, рдХреБрдЫ рдФрд░ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдЖрдк рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╡рд╣рд╛рдВ рдРрд╕реА рдХреЛрдИ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдиреАрдЪреЗ рдПрдХ рдирдИ рдмрд╛рд▓реНрдЯреА рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдФрд░ рд╣реИрд╢ рдЯреЗрдмрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдмрд╛рд▓реНрдЯреА рдХреЛ рд╣реИрд╢ рдЯреЗрдмрд▓ рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, HT рдореЗрдВ рдмрд╛рд▓реНрдЯреА рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рд░рдгреА рд╣реИ, рдЬрдмрдХрд┐ рдмрд╛рд▓реНрдЯреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдмрд╛рд▓реНрдЯреА рдХреА рдХреБрдВрдЬреА рдХреЛ рдЬрд╛рдирдХрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рд░рд▓ рд╣реИред рдЖрдЗрдП рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдПрдЪрдЯреА рд╕реЗ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХреЛрдИ рдЖрдЗрдЯрдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рдпрджрд┐ рдХреБрдВрдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ- (DJBX33A рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рд╣реИрд╢реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╣реИрд╢ рдХрд╛ рдореВрд▓ рдореВрд▓реНрдп рдЬрд╛рджреВ 5381 рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдореБрдЦ рдкреНрд░рддреАрдХ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ рдХреЛ 33 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ ASCII рдореЗрдВ рд╡рд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝реЗрдВ
- рдПрдХ рдореБрдЦреМрдЯрд╛ (рдмрд┐рдЯ рд╡рд╛рдЗрдЬ) рд╣рдореЗрд╢рд╛ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреБрдВрдЬреА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рдмрд╛рд▓реНрдЯреА рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ) 1
- рдирддреАрдЬрддрди, рдЗрд╕ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рд░рдгреА рд╕реЗ рдмрдХреЗрдЯ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреЙрдЗрдВрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
рдорд╛рд╕реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╡реНрдпреВрдЕрд░ рдХреЗ рд╕рд░рдгреА рдореЗрдВ 4 рддрддреНрд╡ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдорд╛рд╕реНрдХ рддреАрди рд╣реИ, рдЬреЛ рдХрд┐ рдмрд╛рдЗрдирд░реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ 11 рд╣реИред
рдЕрдм, рдЕрдЧрд░ рд╣рдореЗрдВ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ 123 (1111011) рдЬреИрд╕рд╛ рдирдВрдмрд░ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдорд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ 3 (3 & 123) рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕ рдирдВрдмрд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╣рд╛рд╢ рдЯреЗрдмрд▓ рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ 54 рдФрд░ 90 рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдорд╛рд╕реНрдХ 3 рдХреЗ рд╕рд╛рдеред рдФрд░ рдпреЗ рджреЛрдиреЛрдВ рдЪрд╛рдмрд┐рдпрд╛рдВ рдорд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рджреЛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдВрдЧреАред
рдЯрдХреНрдХрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?
рдмрд╛рд▓реНрдЯрд┐рдпрд╛рдБ рдЙрдирдХреА рдЖрд╕реНрддреАрди рдореЗрдВ рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдб рд░рдЦрддреА рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд▓реНрдЯреА рдореЗрдВ рдкрд┐рдЫрд▓реА рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд▓реНрдЯреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рднреА рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ (рдХреБрдВрдЬрд┐рдпреЛрдВ рд╕реЗ рд░рд╛рдЦ) рдмрд░рд╛рдмрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореБрдЦреНрдп рджреЛрд╣рд░реА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рд╕рднреА рдмрд╛рд▓реНрдЯрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЪрд▓рддреА рд╣реИ, рдЙрди рдмрд╛рд▓реНрдЯрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЫреЛрдЯреА рджреЛрд╣рд░реА рдЬреБрдбрд╝реА рд╣реБрдИ рд╕реВрдЪрд┐рдпрд╛рдБ рднреА рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдмрд░рд╛рдмрд░ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдХреЛ рд▓рдЧрднрдЧ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ:

рдЖрдЗрдП 54 рдФрд░ 90 рдХреА рдЪрд╛рдмрд┐рдпрд╛рдБ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдФрд░ рдореБрдЦреМрдЯрд╛ 3. рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ 54 рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдЪрдЯреА рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
{ nTableSize: 4, // nTableMask: 3, // nNumOfElements: 1, // HT nNextFreeElement: 55, // , ( ) ..., arBuckets: [ NULL, NULL, 0xff0, // , Bucket, NULL ] } 0xff0: { h: 54, // nKeyLength: 0, // , pData: 0xff1, // , zval ... }
рдЕрдм 90 рдХреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ, рдЕрдм рд╕рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
{ nTableSize: 4, nTableMask: 3, nNumOfElements: 2, nNextFreeElement: 91, ..., arBuckets: [ NULL, NULL, 0xff0, // Bucket NULL ] } 0xff0: { h: 54, pListNext: 0xff2, // Bucket ( ) pNext: 0xff2, // Bucket ... } 0xff2: { h: 90, pListLast: 0xff0, // pLast: 0xff0, // ... }
рдЕрдм nTableSize рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрдЧрд╛ рдЬрдм nNumOfElements> nTableSize)ред
рдЪрд╛рдмрд┐рдпрд╛рдБ 0, 1, 3 рд╡рд╛рд▓реЗ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ (рдЬреЛ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдереЗ, рдФрд░ рдорд╛рд╕реНрдХ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА рд╡реЗ рд╡рд╣реА рд░рд╣реЗрдВрдЧреЗ), рдпрд╣реА рд╣реЛрдЧрд╛:
{ nTableSize: 8, // ( ) nTableMask: 7, nNumOfElements: 5, nNextFreeElement: 91, // ..., arBuckets: [ // , 0xff3, // key = 0 0xff4, // key = 1 0xff2, // key = 90 - 90 ( 90 & 7 = 2), 6- 0xff5, // key = 3 NULL, NULL, 0xff0, // key = 54 NULL ] } 0xff0: { h: 54, pListNext: 0xff2, // , pNext: NULL, // ... } 0xff2: { h: 90, pListNext: 0xff3, pListLast: 0xff0, pLast: NULL, ... } 0xff3: { h: 0, pListNext: 0xff4, pListLast: 0xff2, ... } 0xff4: { h: 1, pListNext: 0xff5, pListLast: 0xff3, ... } 0xff5: { h: 3, pListNext: NULL, // pListLast: 0xff4, ... }
рд╕рд░рдгреА рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рд░рд┐рд╣рд╛рд╢ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд╕рднреА рдореМрдЬреВрджрд╛ рдмрд╛рд▓реНрдЯрд┐рдпреЛрдВ (pListNext рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рдЕрдкрдиреЗ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ (рдЯрдХрд░рд╛рд╡реЛрдВ) рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реБрдП, рдФрд░ arBuckets рдореЗрдВ рдЙрдирдХреЗ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рддрддреНрд╡ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ? рдкрд┐рдЫрд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛:
- рдпрджрд┐ рдХреБрдВрдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ- (DJBX33A рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рд╣реИрд╢реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╣реИрд╢ рдХрд╛ рдореВрд▓ рдореВрд▓реНрдп рдЬрд╛рджреВ 5381 рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдореБрдЦ рдкреНрд░рддреАрдХ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ рдХреЛ 33 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ ASCII рдореЗрдВ рд╡рд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝реЗрдВ
- рдПрдХ рдореБрдЦреМрдЯрд╛ (рдмрд┐рдЯ рд╡рд╛рдЗрдЬ) рд╣рдореЗрд╢рд╛ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреБрдВрдЬреА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рдмрд╛рд▓реНрдЯреА рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ) 1
- рд╣рдо рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдПрдХ рдмрд╛рд▓реНрдЯреА рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ
- рдпрджрд┐ рдЗрд╕ рдмрд╛рд▓реНрдЯреА рдХреА рдХреБрдВрдЬреА рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдЦреЛрдЬ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рдЕрдиреНрдпрдерд╛:
- рд▓реВрдк рдореЗрдВ рд╣рдо pNext (рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИ) рд╕реЗ рдПрдХ рдмрд╛рд▓реНрдЯреА рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдВрдЬреА рдмрд░рд╛рдмрд░ рд╣реИ
рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдпрд╛ рддреЛ pNext рдореЗрдВ рдмрд╛рд▓реНрдЯрд┐рдпрд╛рдБ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддреА рд╣реИрдВ (рддрдм рдиреЛрдЯрд┐рд╕ рдлреЗрдВрдХрд╛ рдЬрд╛рдПрдЧрд╛), рдпрд╛ рдЬрдм рддрдХ рдПрдХ рдореИрдЪ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ PHP рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдЗрд╕ рд╣реИрд╢рдЯреЗрдмрд▓ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдЕрдХреЗрд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХрд┐рд╕реА рднреА рджрд╛рдпрд░реЗ рдореЗрдВ рдкрдбрд╝реЗ рд╣реБрдП рд╕рднреА рдЪрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ HT, рд╕рднреА рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ, рд╕рднреА рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрд╡рдпрдВ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ, HT рдореЗрдВ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реА рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, HT рд▓рдЧрднрдЧ рд╕рдорд╛рди рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ / рдбрд╛рд▓рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреАрдиреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ O (1) рд╣реИ,
рд▓реЗрдХрд┐рди рдЯрдХрд░рд╛рд╡ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рдеред
рд╡реИрд╕реЗ,
рдпрд╣рд╛рдБ рдореИрдВрдиреЗ PHP рдореЗрдВ рд╣реА рдПрдХ рд╣реИрд╢ рдЯреЗрдмрд▓ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рдЦреИрд░, рдпрд╣ рд╣реИ рдХрд┐, PHP рдореЗрдВ PHP рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ =)