рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдмреНрд▓реИрдХ рд╣реЛрд▓

рдпрд╣ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ PHP, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ MySQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред рдореИрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдордп рдХреА рд╣рд╛рдирд┐ рднреА рджреВрдВрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдРрд╕реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рдирд╛ рдерд╛, рдФрд░ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдорд╛рд░рдирд╛ рдерд╛ред



рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ред


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ PHP + MySQL рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдмрдирд╛рдП рдЧрдП рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рд╕рдм рд╕рд┐рдореНрдлрдиреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рднреА рд▓рд┐рдкрдЯрд╛ рд╣реБрдЖ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рдиреЗ рд▓рдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рдШрдЯрдирд╛рдУрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╣рдиреЛрдВ рдХрд╛ рдПрдХ рдмреЗрдбрд╝рд╛) рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рдерд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдШрдЯрдирд╛ рддрд╛рд▓рд┐рдХрд╛ рдмрдврд╝реА рд╣реИ, рдФрд░ MySQL рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рд╕рдм рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдирдореВрдиреЛрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдмрд▓рд╛ рд╣реБрдЖ, рдЕрд░реНрдерд╛рддреНред рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ред рдирддреАрдЬрддрди, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирдореВрдирд╛, рд╕рд╛рде рд╣реА рдПрдХ рдЫреЛрдЯреА рдЧрдгрдирд╛, 11 рд╕реЗрдХрдВрдб рдпрд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рджрд┐рдиреЛрдВ рдореЗрдВ рдЪрдпрдирд┐рдд рдЕрд╡рдзрд┐ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЧрдП:

рд╕рдорд╕реНрдпрд╛ 1 - рдЖрдзрд╛рд░


рдЖрдзрд╛рд░ рдХреЛ MySQL рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рд╕рднреА рдХреЛ рдШреВрд╕ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рд╕реНрддрд░реАрдп, рднрд╛рд░реА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдШреВрдордиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкрд╣рд▓реА рдЧрд▓рддреА рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдирддрд╛ рд╣реВрдВред рдЗрд╡реЗрдВрдЯ рдЯреЗрдмрд▓ рдореЗрдВ 700K рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ 30 рд╕реЗрдХрдВрдб рддрдХ рдмрдврд╝ рдЧрдпрд╛ред рд╕рд╛рд░реА рдЬрдЯрд┐рд▓рддрд╛ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдереАред рдЗрд╡реЗрдВрдЯ рдЯреЗрдмрд▓ рдкрд░ рд╕рдВрдкрддреНрддрд┐ рдпрд╛ "рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдШрдЯрдирд╛рдУрдВ" рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рдерд╛, рдЕрд░реНрдерд╛рддред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдирд╛ рдХрд╛ рдЖрд░рдВрдн рдФрд░ рдЕрдВрддред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдорд╛рдирдХ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдиреЗ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЪрдпрди рдХрд░ рд▓рд┐рдпрд╛ рд╣реЛрдЧрд╛:

SELECT ev1.event_point,ev1.event_date, (select event_date from test_events where ev1.event_point = event_point and event_type = (CASE WHEN ev1.event_type = 1 THEN 2 ELSE 1 END) and event_date > ev1.event_date limit 1) as end_date FROM test_events as ev1 WHERE ev1.event_date BETWEEN '2012-1-1' AND '2012-1-31' AND ev1.event_type IN (1 , 2) 


рдЙрджрд╛рд╣рд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: 1 рдкреНрд░рд╛рд░рдВрдн рдФрд░ 2 рдЕрдВрдд, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рдЧрднрдЧ 40 рдЬреЛрдбрд╝реЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдХреЗрд╡рд▓ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдЕрдВрдд рдХреЗ рд╕рд╛рде, рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рдирд╛, MySQL рд╕реЗ рд▓рдЧрднрдЧ 20-30 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдореБрдлреНрдд рдбреЗрдЯрд╛рдмреЗрд╕ рднреА рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, SQL Server 2008 рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рд╕рдм MSBox 2008 R2 рдкрд░ VirtualBox рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЕрднреА рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐: рд╢реБрд▓реНрдХ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдп рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред
рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ 1KK рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде 1 рд╕реЗрдХрдВрдб рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧрдгрдирд╛ рдХрд░рдирд╛ рдФрд░ рдпрд╣ рдЪреБрдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрди рдпрд╛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред SQL рд╕рд░реНрд╡рд░ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╢рд░реНрдд рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреИрдпрд╛рд░ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

 SELECT event_point,SUM(TIMESTAMPDIFF(HOUR,event_date,end_date)) FROM ( SELECT ev1.event_point,ev1.event_date, (select event_date from test_events where ev1.event_point = event_point and event_type = (CASE WHEN ev1.event_type = 1 THEN 2 ELSE 1 END) and event_id > ev1.event_id limit 1) as end_date FROM test_events as ev1 WHERE ev1.event_date BETWEEN '2012-1-1' AND '2012-1-31' AND ev1.event_type IN (1 , 2) ) report GROUP BY event_point 


рдпрд╣рд╛рдВ рдПрдХ рд╣реА MS SQL рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ 1 рд╕реЗрдХрдВрдб рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ рддреБрд░рдВрдд рдЪрд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди MySQL рдХреЗ рд╕рд╛рде, рдЖрдк рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдЕрд╡рдзрд┐ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдЪреБрд╕реНрдд рд╣реЛ рдЧрдпрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭрд╛ рдФрд░ рд╕реАрдзреЗ PHP рдореЗрдВ рдЪрдпрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬреЛрдЗрди рдкрд░ 20-30 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЦреЛрдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдм рдХреБрдЫ рдПрд░реЗ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рд╡рд╣рд╛рдВ, рджреМрдбрд╝рдХрд░, рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдФрд░ рдлрд┐рд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд╛рддреНрд░рд╛ рдЬрд╛рд░реА рдХрд░реЗрдВред рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдВрдд рдореЗрдВ рдореИрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рдард╣рд░рд╛рд╡ рдкрд░ рдЖ рдЧрдпрд╛, рдЕрд╡рдзрд┐ рдХреА рд╡реГрджреНрдзрд┐ 1 рдорд┐рдирдЯ рддрдХ рд╣реЛрдиреЗ рд▓рдЧреАред рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдПред рдФрд░ рдореИрдВрдиреЗ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕рд┐рд░реНрдл рдПрд░реЗ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╕рдордп рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдмрд╕ рдПрдХ рдЯрд╛рдЗрдкреЛ рдпрд╛ рдПрдХ рдЧрд▓рддреА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рд░рди рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ 2 - PHP рдореЗрдВ рд╕рд░рдгреА


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

 <?php $summary[] = array(); $count = 5000; for($i1=0;$i1<$count;++$i1){ $summary[$i1] = $i1; } $t = microtime(true); for($i1=0;$i1<$count;++$i1){ for($i2=0;$i2<$count;++$i2){ if("5468735354987"!="654654655465"){ $summary[$i1] = $i1*$i2; } } } echo "<li>time: ".(microtime(true)-$t).' ms</li>'; $sum = 0; for($i1=0;$i1<$count;++$i1){ $sum = $sum + $summary[$i1]; } echo "<li>test["+$sum+"]"; ?> 


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, 5000 * 5000 = 25KK рдЪрдХреНрд░реЛрдВ рдХреА рдЧрдгрдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП $ i ++ рдХреЗ рдмрдЬрд╛рдп ++ $ i рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдиреЗ 11 рд╕реЗрдХрдВрдб рджрд┐рдПред рдмрд┐рдирд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдПрдХ рдкреНрд░рдпрд╛рд╕ рдиреЗ рдореБрдЭреЗ 10 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рджрд┐рдпрд╛ред рдФрд░ рдпрд╣ рд╕рдм рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╢реБрд░реВ рд╣реБрдЖ рдФрд░ рд╣реЛрд╕реНрдЯ рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдирд╣реАрдВ, рдФрд░ рдпрд╣ рд╕рдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╣реИ: Intel Core i5, 8GBред PHP 5.3.9
рдпрд╣ рд╕рдордЭрддреЗ рд╣реБрдП рдХрд┐ PHP рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╣ рд╕реАрдорд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рдЪреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ MS Server 2008 R2 рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╣рд╛рде рдореЗрдВ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдЖрд╕рд╛рдиреА рд╕реЗ ASP, ASPX, WSC, VBS, рд╕рд╛рде рд╣реА NodeJS рдореЗрдВ рдлреИрд▓ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ рдирд┐рдореНрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ:

рдЫрд╡рд┐

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд╣рдо рддреАрди рдкрд░реАрдХреНрд╖рд╛ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрддреЗ рд╣реИрдВред 1) рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди 2) рдореЗрд░рд╛ рдХрдВрдкреНрдпреВрдЯрд░ 3) рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред

1. PHP рдиреЗ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдХрд░реАрдмреА рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд┐рдП, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
2. рдПрдПрд╕рдкреА, рдкреАрдПрдЪрдкреА рдХрд╛ рдПрдХ рдХрд░реАрдмреА рдПрдирд╛рд▓реЙрдЧ, рдЦрд░рд╛рдм рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╢рдХреНрддрд┐ рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
3. рдбрдмреНрд▓реНрдпреВрд╕реАрдПрд╕ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдерд╛, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдиреЗ рдЕрдкрдиреЗ рд╕рдордп рдореЗрдВ рдЗрд╕реЗ рдПрдПрд╕рдкреА рдХреЗ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ред
4. рд╡реАрдмреАрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдХрдВрд╕реЛрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ PHP рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред
5. ASPX рдиреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдпрд╛ред рдпрд╣рд╛рдБ рдореИрдВ рд╣реИрд░рд╛рди рдирд╣реАрдВ рд╣реВрдБ, рд╕рднреА рдПрдХ рд╣реА рд╣реИ C #
6. NodeJS рдиреЗ рднреА рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ, рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред

рдпрд╣рд╛рдБ рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

test.php
 <?php $summary[] = array(); $count = 5000; for($i1=0;$i1<$count;++$i1){ $summary[$i1] = $i1; } $t = microtime(true); for($i1=0;$i1<$count;++$i1){ for($i2=0;$i2<$count;++$i2){ if("5468735354987"!="654654655465"){ $summary[$i1] = $i1*$i2; } } } echo "<li>time: ".(microtime(true)-$t).' ms</li>'; $sum = 0; for($i1=0;$i1<$count;++$i1){ $sum = $sum + $summary[$i1]; } echo "<li>test["+$sum+"]"; ?> 


Test.asp
 <% count = 5000 Dim summary(5000) for i1=0 to count summary(i1) = i1 next t = timer() for i1=0 to count for i2=0 to count if ("5468735354987"<>"654654655465") then summary(i1) = i1*i2 end if next next response.write timer()-t sum = 0 for i1=0 to count sum = sum + summary(i1) next response.write "sum:"&sum response.write "<br>test-wsc<br>" Dim obj Set obj = GetObject("script:"&Server.MapPath("test.wsc")) Call obj.run() %> 


test.wsc
 <?xml version="1.0"?> <component> <?component error="true" debug="true"?> <registration description="test" progid="test" version="0.1" classid="{13e4b1b3-c698-40ea-8450-9cbc9b33ef03}" > </registration> <public> <method name="run"/> </public> <implements type="ASP" id="ASP"/> <script language="VBScript"> <![CDATA[ Function run() count = 5000 Dim summary(5000) for i1=0 to count summary(i1) = i1 next Dim t : t = timer() for i1=0 to count for i2=0 to count if ("5468735354987"<>"654654655465") then summary(i1) = i1*i2 end if next next response.write (timer()-t) sum = 0 for i1=0 to count sum = sum + summary(i1) next response.write "sum:"&sum End Function ]]> </script> </component> 


test.vbs
 count = 5000 Dim summary(5000) for i1=0 to count summary(i1) = i1 next t = timer() for i1=0 to count for i2=0 to count if ("5468735354987"<>"654654655465") then summary(i1) = i1*i2 end if next next msgbox (timer()-t) sum = 0 for i1=0 to count sum = sum + summary(i1) next msgbox "sum:"&sum 


test.aspx
 <%@ Page validateRequest="false" Debug="true" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Diagnostics" %> <%@ Import Namespace="System.Threading" %> <script language="C#" runat="server"> public void Page_Load(Object sender, EventArgs E) { int count = 5000; int[] summary = new int[5000]; for (int i1 = 0; i1 < count; i1++) { summary[i1] = i1; } Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); for (int i1 = 0; i1 < count; ++i1) { for (int i2 = 0; i2 < count; ++i2) { if("5468735354987"!="654654655465"){ summary[i1] = i1*i2; } } } stopwatch.Stop(); Response.Write("<li>time: " + (stopwatch.ElapsedMilliseconds) + " ms</li>"); long sum = 0; for (int i1 = 0; i1 < count; ++i1) { sum = sum + summary[i1]; } Response.Write("<li>test[" + sum + "]"); } </script> 


test_nodejs.js
 var fs = require('fs'), http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); summary = new Array(); count = 5000; for(var i1=0;i1<count;++i1){ summary[i1] = i1; } var start = new Date().getTime(); for(var i1=0;i1<count;++i1){ for(var i2=0;i2<count;++i2){ if("5468735354987"!="654654655465"){ summary[i1] = i1*i2; } } } res.write("<li>time: "+(new Date().getTime() - start)+" ms"); var sum = 0; for(i1=0;i1<count;++i1){ sum = sum + summary[i1]; } res.write("<li>sum: ["+sum+"]"); res.end(); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 



рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ ASPX рдФрд░ NodeJS рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрд╕реА рдЪреАрдЬрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рд╣реИред рдлрд┐рд░, рдХреЛрдб рддреБрд░рдиреНрдд HTML рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:

 <!DOCTYPE html> <html> <head> <script> function testClear() { var summary = []; var count = 5000; for(var i1=0;i1<count;++i1){ summary[i1] = i1; } var start = new Date().getTime(); for(var i1=0;i1<count;++i1){ for(var i2=0;i2<count;++i2){ if("5468735354987"!=="654654655465"){ summary[i1] = i1*i2; } } } document.getElementById("testClear").innerHTML = "time: "+(new Date().getTime() - start)+" ms"; var sum = 0; for(i1=0;i1<count;++i1){ sum = sum + summary[i1]; } alert("sum: ["+sum+"]"); } </script> </head> <body> <p><a href="#" onclick="testClear();"><div>test clear:<span id='testClear'></span></div></a></p> </body> </html> 


рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд░рдирд┐рдВрдЧ рдиреЗ рдореБрдЭреЗ 75 ms рджрд┐рдП , рдЬреЛ рдХрд┐ рдЕрднреА рдареАрдХ рд╣реИред рд╕рдорд╛рдзрд╛рди рдПрдХрджрдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ - PHP рд╕реЗ рд╕рд░рдгреА рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕реЗ рд╕рд░рдгреА рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди! .. рд╢реБрд░реВ рд╣реБрдЖ рд╕рдордп рдлрд┐рд░ рд╕реЗ 10 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдерд╛ред рдХреЛрдб рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ рдЦреЛрдЬреЛрдВ рдиреЗ рдореБрдЭреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирд╛рдордХ рдПрдХ рдирдИ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

рд╕рдорд╕реНрдпрд╛ 3 - рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ AJAX


рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдПрдХ AJAX рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╛рдиреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡реЗрдм 2.0, рдлреИрд╢рдиреЗрдмрд▓ рдФрд░ рд╕реБрдВрджрд░ рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдЪрдпрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, CREATE REPORT рдХреЛ рджрдмрд╛рддрд╛ рд╣реИ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдиреАрдЪреЗ ajax рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╣рд░ рдХреЛрдИ рдЕрдм рдЗрд╕реЗ рдорд╛рдирдХ рдорд╛рдирддрд╛ рд╣реИ, рд░рд┐рдмреВрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрдзрд░ рдХрдкрдЯреА рд╢рддреНрд░реБ рдЫрд┐рдк рд░рд╣рд╛ рдерд╛ред
рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреЗрдЬ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП evalScripts [true / false] рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЬрдм (evalScripts = false) рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реВрдЪрдирд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕рднреА рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрд╛рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдкреВрд░реЗ рд╣реЛ рдЬрд╛рдПрдВ рдФрд░ evalScripts = рд╕рд╣реА рд╕реЗрдЯ рд╣реЛ рдЬрд╛рдП, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП eval () рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдмрд╕ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИред рдирддреАрдЬрддрди, рдЗрд╕рдХреЗ 75 рдПрдордПрд╕ рдХреЗ рд╕рд╛рде рд╢реБрджреНрдз рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп , рд╣рдореЗрдВ рд▓рдЧрднрдЧ 11 рд╕реЗрдХрдВрдб рдорд┐рд▓рддреЗ рд╣реИрдВ !!! рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЭрдЯрдХрд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрдб рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕ рдбрд░ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реБрдИ рдЬреИрд╕реЗ рд╣реА рдореИрдВрдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдгрдирд╛ рдХреАред рдпрд╛рдиреА рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдореЗрдВ, рдПрд░реЗ рдиреЗ рдЙрддреНрдкрдиреНрди рдкреАрдПрдЪрдкреА рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛, рдФрд░ рдЕрдкрдиреЗ 75 рдПрдордПрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдорд┐рд▓рд╛ред

рдЗрд╕ рддрдереНрдп рдиреЗ рдореБрдЭреЗ рдПрдХ рд╣реА рдХреЛрдб рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ JQuery рдореЗрдВ рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдорд┐рд▓рд╛:

рдЫрд╡рд┐

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

test.htm
 <!DOCTYPE html> <html> <head> <script> function testClear() { var summary = []; var count = 5000; for(var i1=0;i1<count;++i1){ summary[i1] = i1; } var start = new Date().getTime(); for(var i1=0;i1<count;++i1){ for(var i2=0;i2<count;++i2){ if("5468735354987"!=="654654655465"){ summary[i1] = i1*i2; } } } document.getElementById("testClear").innerHTML = "time: "+(new Date().getTime() - start)+" ms"; var sum = 0; for(i1=0;i1<count;++i1){ sum = sum + summary[i1]; } alert("sum: ["+sum+"]"); } </script> </head> <body> <p><a href="#" onclick="testClear();"><div>test clear:<span id='testClear'></span></div></a></p> </body> </html> 


test_jquery.htm
 <!DOCTYPE html> <html> <head> <script type='text/javascript' src='jquery.js'></script> <script> function test() { $('#test').html('loading...'); $.get('test_ajax.html', function(data) { $('#test').html(data); }); } </script> </head> <body> <p><a href="#" onclick="test();"><div>test jquery ajax:<span id='test'></span></div></a></p> </body> </html> 


test_prototype.htm
 <!DOCTYPE html> <html> <head> <script type='text/javascript' src='prototype.js'></script> <script> function testFn() { $('test').update('loading...'); new Ajax.Updater('test','test_ajax.html', { method: 'get', asynchronous:true, evalScripts:true, onSuccess: function(transport) { $('test').update('in process...'); }, onFailure: function(transport) { alert("Error"); } }); } </script> </head> <body> <p><a href="#" onclick="testFn();"><div>test prototype ajax:<span id='test'></span></div></a></p> </body> </html> 


test_ajax.html
 <script> summary = new Array(); count = 5000; for(i1=0;i1<count;++i1){ summary[i1] = i1; } var start = new Date().getTime(); for(var i1=0;i1<count;++i1){ for(var i2=0;i2<count;++i2){ if("5468735354987"!="654654655465"){ summary[i1] = i1*i2; } } } document.getElementById("test").innerHTML = "time: "+(new Date().getTime() - start)+" ms"; var sum = 0; for(i1=0;i1<count;++i1){ sum = sum + summary[i1]; } alert("sum: ["+sum+"]"); </script> 



рдирддреАрдЬрддрди, рддрд╕реНрд╡реАрд░ рдХрд╛рдлреА рдбрд░рд╛рд╡рдиреА рдирд┐рдХрд▓реАред
1. рдХреНтАНрдпреЛрдВ рдХреНтАНрд▓реАрди рдХреЛрдб рдХреЗ рд╕рд╛рде IE рдХреЗ 64 рдмрд┐рдЯ рд╕рдВрд╕реНтАНрдХрд░рдг рдиреЗ 64 рдмрд┐рдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЧрддрд┐ рдХреЛ рдЗрддрдирд╛ рдиреБрдХрд╕рд╛рди рджрд┐рдпрд╛, рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛
2. рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рддрд╣рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрддрд┐ рдХреЗрд╡рд▓ рднрдпрд╛рдирдХ рд╣реИред рд╕реНрд╡рдЪреНрдЫ рдХреЛрдб рдФрд░ рдЕрдЬрд╛рдХреНрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмреАрдЪ, рдЕрдВрддрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред
3. JQuery рднреА рд╣реИрд░рд╛рдиред рдпрджреНрдпрдкрд┐ рдпрд╣ рдЙрддрдирд╛ рд╣реА рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╢реБрджреНрдз рдЬреЗрдПрд╕ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рднреА рджреВрд░ рд╣реИред
4. рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдореГрдд рдЕрдВрдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпреЛрдВ IE рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдЬреИрд╕реЗ рдХреНрд░реЛрдо рдиреЗ рдЗрддрдиреЗ рднрдпрд╛рдирдХ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, IE9 рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдерд╛, рдФрд░ IE10 рд╕рд┐рд░реНрдл рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдерд╛ред

рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджрд┐рдП рдЧрдП рдереЗред рд╣рд╛рде рдореЗрдВ рдХреНрдпрд╛ рдерд╛, рддрдм рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рд╣реИред

рд╕рдорд╕реНрдпрд╛ 4 - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрджрд▓реЗрдВ


рд╕рдЪрдореБрдЪ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдореИрдВ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдПрд╕рдкреА рдкрд░ред рд╡рд╣рд╛рдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЗ рд░рд┐рдкреЛрд░реНрдЯ рдЬрд╛рд░реА рдХреА, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, 3.5 рдПрдордмреА рдХреЗ рдСрд░реНрдбрд░ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рдмрд╛рдж рдореЗрдВ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдХреЗрд╡рд▓ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ () рдХреЗ рд╕рд╛рде рдСрдкрд░реЗрд╢рди рдореЗрдВ рд▓рдЧрднрдЧ 11 рд╕реЗрдХрдВрдб рд▓рдЧреЗред рдПрдХ рдЬреЛрдЧ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдЯреВрдЯрдиреЗ, рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рджреАред рдирддреАрдЬрддрди, рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдЫреЛрдЯреА рд╕реА HTML рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдХрд╛рд░ рдореЗрдВ 3.5Mb рдХреЗ рддрд╣рдд, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рдлреАрдб рдХрд░рдиреЗ рдФрд░ рд╕рдорд╛рди рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ Array рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд╛рда рдореЗрдВ рдЯреИрдЧ рдХреЗ рд╕рд╛рде 3.5M рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдФрд░ рдХреЛрдб рдХрд╛ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдорд┐рд▓рддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг (рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ) рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ UsbWebServer рд╣реИ, рдмрд╛рдХреА рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рджрд╛рддрд╛ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдореЗрд░реА рдкрд╣реБрдВрдЪ рдереАред

1. рдПрдПрд╕рдкреА рдореЗрдВ рднрд╛рд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореБрджреНрджреЗ рд╣реИрдВред рдирд┐рдпрдорд┐рдд рд╕реАрдЬрди рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдиреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреЗрд╡рд▓ рдмрджрддрд░ рдмрдирд╛ рджрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЯреВрдЯрдирд╛ рдерд╛ред рд╕рд░реНрд╡рд░ рдФрд░ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдирд┐рд░реНрднрд░рддрд╛ рднреА рд╣реИред
2. рдРрд╕рд╛ рд╣реА ASPX рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╣реБрдЖред рдЗрд╕рдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ 13 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░, рд╡реЗрдм рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЬреЛ 1and1 рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЧрддрд┐ 4 рдЧреБрдирд╛ рдХрдо рд╣реЛ рдЧрдИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдЫреЛрдЯреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдпрд╛ред
3. PHP рдиреЗ рдлрд┐рд░ рд╕реЗ рдХреБрдЫ рд╕реНрдерд┐рд░рддрд╛ рджрд┐рдЦрд╛рдИ, рд▓реЗрдХрд┐рди рдХреАрд╡ рд╣реЛрд╕реНрдЯрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛, рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдореЗрдЬрдмрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рд╕рдВрд╕рд╛рдзрди рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рдпрд╛ рд╕рд░реНрд╡рд░ рд░рд╛рдд рдореЗрдВ рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рдерд╛ред
4. NodeJS рдиреЗ рдЗрд╕ рджреМрдбрд╝ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ 2 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдирд╣реАрдВ рдереАред рдЗрд╕рд▓рд┐рдП рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред

рдХреЛрдб рд╡рд┐рдХрд▓реНрдк:

test_replace.asp
 <% 'time: 13.58594 'time: 58.01563 Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.GetFile(Server.MapPath("test_replace.txt")) Set Reader = FSO.OpenTextFile(File, 1,False) buffer = Reader.ReadAll Reader.Close t = timer() For rec=1 to 10 For col=0 to 100 buffer = Replace(buffer,"{{"&rec&":"&col&"}}","-|-") Next Next response.write "time: "&timer()-t response.write "<hr>" response.write buffer %> 


test_replace.aspx
 <%@ Page validateRequest="false" Debug="true" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Diagnostics" %> <%@ Import Namespace="System.Threading" %> <script language="C#" runat="server"> public void Page_Load(Object sender, EventArgs E) { //time: 8736 ms //time:[1and1] 16183 ms string buffer = File.ReadAllText(Server.MapPath("test_replace.txt")); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); for (int rec = 0; rec < 10; rec++) { for (int col = 0; col < 100; col++) { buffer = buffer.Replace("{{" + rec + ":" + col + "}}", "-|-"); } } stopwatch.Stop(); Response.Write("<li>time: " + (stopwatch.ElapsedMilliseconds) + " ms</li>"); Response.Write(buffer); } </script> 


test_replace.php
 <?php //time: 4.570 ms //time:ks.ua 10.3491752148 ms //time:servmax 5.7612838745117 ms $buffer = file_get_contents('test_replace.txt'); $t = microtime(true); for($rec=0;$rec<10;++$rec){ for($col=0;$col<100;++$col){ $buffer = str_replace( "{{".$rec.":".$col."}}","-|-", $buffer ); } } echo "time: ".(microtime(true)-$t).' ms'; echo "<hr>"; echo $buffer; ?> 


test_replace_nodejs.js
 var fs = require('fs'), http = require('http'); http.createServer(function (req, res) { fs.readFile('test_replace.txt', function (err, data) { data = String(data); if (err) { res.writeHead(404); res.end(JSON.stringify(err)); return; } res.writeHead(200, {'Content-Type': 'text/html'}); var start = new Date().getTime(); for (var rec = 0; rec < 10; ++rec) { for (var col = 0; col < 100; ++col) { data = data.replace(new RegExp( "{{" + rec + ":" + col + "}}", "g" ), "-|-"); } } console.log(new Date().getTime()-start); res.end(data); }); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 



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


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

PSS MySQL рдореЗрдВ рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рдмрд╣реБрдд рднреНрд░рд╛рдордХ рд╣реИред рдлрд┐рд░ рднреА, рдпрд╣ рддреАрд╕рд░реЗ рд╕реНрддрд░ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд░реНрдбрдкреНрд░реЗрд╕, рдлреЛрд░рдо рдФрд░ рдЕрдиреНрдп рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореБрдХреНрдд рд╣реИ рдЕрдВрдд рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реАрдзреЗ рд╕рднреА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ рд╣реБрдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╣реА рдХреНрд╡реЗрд░реА рдХреЗ рдмрдЬрд╛рдп PHP рдХреЛрдб рдХреЗ рдХрд┐рд▓реЛрдореАрдЯрд░ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рд╢реНрди рдХреЗрд╡рд▓ рдореВрд▓реНрдп рдореЗрдВ рд╣реИ, рддреЛ рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рдХреЛ рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ, рдЬреЛ рдореБрдлрд╝реНрдд рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреЗ рд╕рднреА рдлрд╛рдпрджреЗ рджреЗрдЧрд╛, рдпрд╛ рдУрд░реЗрдХрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рд╕рднреА рд╕рдорд╛рди рд╣реИрдВ, рдпреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИрдВред PostgresSQL рдиреЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЖрдЧреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЕрдЪрд╛рдирдХ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдпрд╣рд╛рдВ SQL рд╕рд░реНрд╡рд░ рдХреЛрдб рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

test.sql
 CREATE TABLE test_events ( event_id int IDENTITY (1, 1), event_type int, event_point int, event_date datetime ) -------------- ALTER TABLE [test_events] ADD CONSTRAINT [IDX_event_type] DEFAULT ((1)) FOR [event_type] GO ALTER TABLE [test_events] ADD CONSTRAINT [IDX_event_point] DEFAULT ((1)) FOR [event_point] GO ALTER TABLE [test_events] ADD CONSTRAINT [IDX_event_date] DEFAULT (NULL) FOR [event_date] GO -------------- DECLARE @counter bigint = 0; DECLARE @event_type smallint = 1; -------------- BEGIN TRANSACTION; WHILE @counter < 1000000 BEGIN IF @event_type=1 SET @event_type=2 ELSE SET @event_type=1 INSERT INTO test_events (event_type,event_point,event_date) VALUES (@event_type,ROUND(5 * RAND() + 100,0),DATEADD(MINUTE,@counter*10,'1/1/2011')) SET @counter = @counter + 1 END COMMIT TRAN; -------------- SET NOCOUNT ON SELECT event_point,SUM(DATEDIFF(hour,event_date,end_date)) FROM ( SELECT ev1.event_point,ev1.event_date, (select top 1 event_date from test_events where ev1.event_point = event_point and event_type = (CASE WHEN ev1.event_type = 1 THEN 2 ELSE 1 END) and event_id > ev1.event_id) as end_date FROM test_events as ev1 WHERE ev1.event_date BETWEEN '2012-1-1' AND '2012-1-31' AND ev1.event_type IN (1 , 2) ) report GROUP BY event_point 



рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрдпреЛрдЧреА рд▓рдЧреА рд╣реЛрдЧреАред

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


All Articles