рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░рдирдЯрд╛рдЗрдо рдирд┐рдпрдВрддреНрд░рдг

рдкреНрд░рдХрд╛рд╢рди C / C ++ / C # рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдореАрдЯреНрд░рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рд╛рд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдШрдЯрдХреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдкрд░ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб рдореЗрдВ "рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБ" рдХреЗ рд╕рдорд╛рд╡реЗрд╢ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рд╡рд┐рдзрд┐рдпрд╛рдБ, рдХрд╛рд░реНрдп рдФрд░ {} рдмреНрд▓реЙрдХред рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдореАрдЯреНрд░рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рдкрд╛рда рд░рд┐рдкреЛрд░реНрдЯ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдкрдпреБрдХреНрддрддрд╛ рдХреЛрдб рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЖрд╡реЗрджрди рдХреЗ рдЕрд╕реНрдерд╛рдпреА рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг: рдкреВрд░реНрдг рдпрд╛ рдЖрдВрд╢рд┐рдХ, рдпрд╛ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЗ рдХреБрдЫ рд╕реЗрдЯ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ред

рджрд┐рдП рдЧрдП C ++ / C # рд╕реНрд░реЛрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдкрд░рд┐рдЪрдп


рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕рд╡рд╛рджреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдХреА рд░рд┐рд▓реАрдЬрд╝) рдкрд░ рдПрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг;
  • рд░реИрдо рдХреЗ рдЙрдкрднреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди;
  • рд░рдирдЯрд╛рдЗрдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╕реНрдерд┐рд░реАрдХрд░рдгред

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

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

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

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

рд░рдирдЯрд╛рдЗрдо рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ


рдХрд┐рд╕реА рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рдЕрдореВрд░реНрдд рдорд╢реАрди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд░рд╛рдЬреНрдпреЛрдВ {рд╕реЗрдВрдЯ} рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ {Tr} рдХреЗ рдкрд░рд┐рдорд┐рдд рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред

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

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдФрд░ рд╕рдВрдЪрдп рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ
PROFILE_ENTRY C ++ рдореИрдХреНрд░реЛ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЗрд╕рдХреЗ рдЕрдВрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рдордп рдореАрдЯреНрд░рд┐рдХ - рдХреБрд▓ рд╕рдордп рд░рд╛рдЬреНрдп рдореЗрдВ рдЙрд╕ рд╕рдордп рдерд╛ рдЬрдм рдЪреЗрдХрдкреЙрдЗрдВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдЕрдЧрд▓реЗ рд╕реНрддрд░ (рдПрдХ рдмреНрд▓реЙрдХ, рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐, рдлрд╝рдВрдХреНрд╢рди, рдЖрджрд┐) рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг (рдЙрдирдХреЗ рд╕рдордп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдЧрдгрдирд╛) 'рдЯрд╛рдЗрдордореИрдирд░' рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ 'рдЯрд╛рдЗрдордореИрдирд░' рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдФрд░ рдкрд╣рд▓реЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ 'рд░рдЬрд┐рд╕реНрдЯрд░рдЗрдиреНрд╕реНрдЯреНрд░реА' рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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



рдиреАрдЪреЗ рд╕реНрд░реЛрдд C ++ рдХреЛрдб рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

//     #include <vector> #include <map> #include <algorithm> #include <stdio.h> #include <time.h> typedef unsigned long LONGEST_INT; // ,    //     //     //  ( )   // ()   //    #define PROFILER_ENABLED // CREATE_PROFILER  timeManager , //     // 'main()' #ifdef PROFILER_ENABLED #define CREATE_PROFILER timeManager tManager; #else #define CREATE_PROFILER //   CREATE_PROFILER. #endif //INITIALIZE_PROFILER    timeManager  //       //   'main()' #ifdef PROFILER_ENABLED #define INITIALIZE_PROFILER bool timeManager::object = false;\ std::vector<registerEntry> timeManager::entries; #else #define INITIALIZE_PROFILER //   INITIALIZE_PROFILER. #endif //DELAY(_SECONDS)   '_SECONDS' . //    ,  //     //  #ifdef PROFILER_ENABLED #define DELAY(_SECONDS) {clock_t clk_wait=clock()+((double)_ARG)*CLOCKS_PER_SEC;\ while(clock()<clk_wait) {}} #else #define DELAY(_SECONDS) //    DELAY. #endif //     , //     UNIX  WINDOWS //      #ifdef PROFILER_ENABLED #define MERGE2(x,y) x##y #define MERGE1(_X,_Y) MERGE2(_X,_Y) #if WIN32 #define UNIQUENAME prefix,postfix) MERGE1(prefix,postfix) #else #define UNIQUENAME(prefix,postfix) MERGE2(prefix,postfix) #endif #define GEN_SRC(_ARG1,_ARG2) static int UNIQUENAME(ind,_ARG2)=-1;\ if(UNIQUENAME(ind,_ARG2)<0)\ UNIQUENAME(ind,_ARG2)=timeManager::add_entry(_ARG1);\ timeManager::incr_counter(UNIQUENAME(ind,_ARG2));\ timerObject UNIQUENAME(tm,_ARG2)(UNIQUENAME(ind,_ARG2)); //PROFILE_ENTRY      #ifdef PROFILER_ENABLED #if WIN32 #define PROFILE_ENTRY(_TITLE) GEN_SRC(_TITLE,__COUNTER__) #else #define PROFILE_ENTRY(_TITLE) GEN_SRC(_TITLE,__LINE__) #endif #else #define PROFILE_ENTRY(_TITLE) //    PROFILE_ENTRY. #endif //        //    //    ,   timeManager struct registerEntry { //     (  ) std::string entry_name; //     //     LONGEST_INT covers_counter; //      //     (ticks) LONGEST_INT elapsed_time; // registerEntry(const char * title):entry_name(title), covers_counter(0), elapsed_time(0) {} }; //     class timerObject { //   ,     int index; //    clock_t start_time; public: //       timerObject(int ind):index(ind),start_time(clock()) {} //    тАЬ тАЭ  //       //   ~timerObject(void) { timeManager::incr_timer(index,(LONGEST_INT)(clock()-start_time)); } }; //     class timeManager { private: //     static std::vector<registerEntry> entries; // ,     //    static bool object; public: //     //  ,    //     static int add_entry(const char * title) { entries.push_back(registerEntry(title)); return (((int)entries.size())-1); } //       //      static void incr_counter(int profile_entry_id) { entries[profile_entry_id].covers_counter++; } //  'value'     //      static void incr_timer(int profile_entry_id, LONGEST_INT value) { entries[profile_entry_id].elapsed_time += val; } //       //   static void report(void); //  timeManager(void) { if(!object) object = true; else { printf("\n<<>>:    'timeManager' .\n"); throw; } } //        //   virtual ~timeManager(void) {report();} }; //      bool cmp_entries(registerEntry & first, registerEntry & second) { if(first.entry_name.compare(second.entry_name)>0) return false; return true; } //      //    void timeManager::report(void) { const std::string bar(72,'*'); //        const char * REPORT_FILE = "C:\\tmProfile.txt"; FILE * fp = fopen(REPORT_FILE,"w"); if(!fp) { printf("\n<<>>:       (%s)",REPORT_FILE); return; } fprintf(fp,"\n#%s",bar.c_str()); fprintf(fp,"\n#\n#      "); fprintf(fp,"\n#\n#%s",bar.c_str()); fprintf(fp,"\n#\n# %-35s %-15s %-20s", " ",""," ()"); fprintf(fp,"\n# %-35s %-15s %-20s", "------------------","-------------","---------------\n#"); //         std::sort(entries.begin(),entries.end(),cmp_entries); for(unsigned jj = 0; jj< entries.size(); jj++) { fprintf(fp,"\n# %-35s %-16d", entries[jj].entry_name.c_str(), entries[jj].covers_counter); if(entries[jj].covers_counter == 0) fprintf(fp,"%-20d",0); else fprintf(fp,"%-20.0f", static_cast<double>(entries[jj].elapsed_time)/ static_cast<double>(CLOCKS_PER_SEC)); } if(entries.size() == 0) fprintf(fp,"\n# No covered profile entries found\n"); fprintf(fp,"\n#\n#%s\n",bar.c_str()); fclose(fp); } 

рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрд░рдЪрдирд╛ рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░рдирдЯрд╛рдЗрдо рдХрдВрдЯреНрд░реЛрд▓ рдЯреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП, рд╕рд╛рде рд╣реА рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рд╢рд┐рд╖реНрдЯ 1 рджреЗрдЦреЗрдВред рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб )ред





рдЕрдиреБрднрд╛рдЧ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ 2. C # рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб C # рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдПрдбреЗрдб рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рдгрд╛рд▓реА - EREMEX рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдбреЗрд▓реНрдЯрд╛ рдбрд┐рдЬрд╛рдЗрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реНрд░рдорд╕рд╛рдзреНрдп рдирд┐рд╖реНрдкрд╛рджрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рддрд░реАрдХреЛрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╕рдордп рд▓реЗрдЦрдХ TimeWatcher.StartWatch () рдФрд░ TimeWatcher.StopWatch () рдХреЗ рдЬреЛрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрддреНрдкрд╛рдж рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рдордп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред


рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд░реНрдгрд┐рдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдкрд░ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡реЗ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:

  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рдордп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдФрд░ рдЬрдорд╛ рдХрд░рдирд╛;
  • рдкреНрд░рд╛рдердорд┐рдХ рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛;
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдкрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдЯреВрд▓ рдХреЛ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рдХрд░рдХреЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди;
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдордп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд╕реНрдерд┐рд░рддрд╛ (рдФрд░ рдЧрд┐рд░рд╛рд╡рдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ) рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред

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

рдкрд░рд┐рд╢рд┐рд╖реНрдЯ 1. рдбреЗрдореЛ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб


 INITIALIZE_PROFILER int main(int argc, char * argv[]) { //create profile manager CREATE_PROFILER PROFILE_ENTRY("1 Main context") f11(); for(unsigned jj = 0;jj<4;jj++) f12(); f13 (); f14 (); f15 (); f16 (); f17(); return 0; } void f11(void)///////////////////////////////////////// { PROFILE_ENTRY ("2 f11()........................") for (unsigned jj = 0; jj<5; jj++) { PROFILE_ENTRY ("2 f11()::for(...){...} iterat-ing") DELAY(1) } //profile entry for repeating int nn(3); while(nn > 0) { PROFILE_ENTRY("2 f11()::while(...){...} iterat-ing") DELAY(1) nn--; } } void f12(void)///////////////////////////////////////// { PROFILE_ENTRY("3 f12()........................") goto ending; { PROFILE_ENTRY("3 f12()::ignored code part") DELAY(1) } ending: PROFILE_ENTRY("3 f12()::ending code part") DELAY(2) } void f13(void) ///////////////////////////////////////// { PROFILE_ENTRY("4 f13()........................") srand((unsigned) time(NULL)/2); for(unsigned jj = 0; jj < 200; jj++) { if(rand()%2 == 0) { PROFILE_ENTRY("4 f13()::even branch") DELAY(0.01) } else { PROFILE_ENTRY("4 f13()::od branch") DELAY(0.02) } } } void f14(void)///////////////////////////////////////// { static int depth = 10; { PROFILE_ENTRY("5 f14() recursion") depth--; DELAY(0.5) if(depth == 0) return; } f14(); } void f15(void)///////////////////////////////////////// { PROFILE_ENTRY("7 f15()........................") for(unsigned jj = 0; jj < 10; jj++) { demo_class obj; obj.method1(); obj.method2(); obj.method3(); } } void f16(void)///////////////////////////////////////// { PROFILE_ENTRY("8 f16()........................") try { for(int jj = 10; jj >= 0; jj--) { PROFILE_ENTRY("81 f16() try clause") DELAY(1) int rr = 200/jj; } } catch(...) { PROFILE_ENTRY("81 f16() catch clause") DELAY(2) return; } } void f17(void)///////////////////////////////////////// { PROFILE_ENTRY("9 f17()........................") f21(); f22(); f23(); f24(); f25(); } void f22(void)///////////////////////////////////////// { PROFILE_ENTRY("91 f22()........................") DELAY(1) f221(); f222(); f223(); } void f23(void) {PROFILE_ENTRY("91 f23()") DELAY(1) } void f24(void) {PROFILE_ENTRY("91 f24()") DELAY(1) } void f25(void) {PROFILE_ENTRY("91 f25()") DELAY(1) } void f221(void) {PROFILE_ENTRY("91 f221()") DELAY(3) } void f222(void) {PROFILE_ENTRY("91 f222()") DELAY(4) } void f223(void) {PROFILE_ENTRY("91 f223()") DELAY(5) } 

рдЕрдиреБрдкреВрд░рдХ 2. рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░рдирдЯрд╛рдЗрдо рдирд┐рдпрдВрддреНрд░рдг рд╕реА # рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб


 /// <summary> ///             /// </summary> public class TimeWatcher { /// <summary> ///            /// </summary> internal class TimeEntry { //     public Stopwatch timeWatch; //       public long elapsedTime; //  public TimeEntry() { timeWatch = new Stopwatch(); elapsedTime = 0; } } //       //    private static bool enableTimeWatcher = false; //            private static Dictionary<string, TimeEntry> entryDictionary = new Dictionary<string, TimeEntry>(); //         public static void StartWatch(string postfix = "") { if (!enableTimeWatcher) return; string entryName = GetCurrentMethod(); if (postfix != "") { entryName += postfix; } //    ,      //         if (!entryDictionary.ContainsKey(entryName)) { entryDictionary.Add(entryName, new TimeEntry()); entryDictionary[entryName].timeWatch.Start(); } else { if (entryDictionary[entryName].timeWatch.IsRunning) { throw new System.InvalidOperationException(":    '" + entryName + "'  ."); } else entryDictionary[entryName].timeWatch.Restart(); } } //        public static void StopWatch(string postfix = "") { if (!enableTimeWatcher) return; string entryName = GetCurrentMethod(); if (postfix != "") { entryName += postfix; } //    ,      if (!entryDictionary.ContainsKey(entryName)) { throw new System.InvalidOperationException(":     -    '" + entryName + "'."); } if (!entryDictionary[entryName].timeWatch.IsRunning) { throw new System.InvalidOperationException ":        '" + entryName + "'."); } entryDictionary[entryName].timeWatch.Stop(); entryDictionary[entryName].elapsedTime += entryDictionary[entryName].timeWatch.ElapsedMilliseconds; } //        //     public static void TimeWatchReport() { const string bar = "============================================="; if (!enableTimeWatcher) return; Console.WriteLine(""); Console.WriteLine(bar); Console.WriteLine("     (): "); Console.WriteLine(""); int maxLen = 0; foreach (var timeEntry in entryDictionary) { if(timeEntry.Key.Length > maxLen) maxLen = timeEntry.Key.Length; } maxLen++; string strFormat = "{0," + maxLen + "} ... {1,-10}"; foreach (var timeEntry in entryDictionary) { Console.WriteLine(strFormat, timeEntry.Key, timeEntry.Value.elapsedTime); } Console.WriteLine(bar); Console.WriteLine(""); entryDictionary.Clear(); enableTimeWatcher = false; } //          //      /tmw    //   public static void InitTimeWatch() { if (Environment.GetCommandLineArgs().Any(v => v == "/tmw")) { if (entryDictionary.Count > 0) { TimeWatchReport(); } entryDictionary.Clear(); enableTimeWatcher = true; } } //        private static string GetCurrentMethod() { StackTrace st = new StackTrace(); StackFrame sf = st.GetFrame(2); return sf.GetMethod().Name; } } 

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


All Articles