рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдореЗрдВ рд╣реБрдб рдХреЗ рддрд╣рдд

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



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



DateTime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП DateTime рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:



var before = DateTime.Now; SomeOperation(); var spendTime = DateTime.Now - before;
      
      





рдкреНрд░реЙрдкрд░реНрдЯреА DateTime.Now - рд╕реНрдерд╛рдиреАрдп рд╡рд░реНрддрдорд╛рди рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рд▓реМрдЯрд╛рддрд╛ рд╣реИред DateTime.Now рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдмрдЬрд╛рдп, рдЖрдк DateTime.UtcNow рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬреЛ рд╡рд░реНрддрдорд╛рди рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдпреВрдЯреАрд╕реА рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдордиреНрд╡рд┐рдд рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВред



 var before = DateTime.UtcNow; SomeOperation(); var spendTime = DateTime.UtcNow - before;
      
      





рдбреЗрдЯрд╛рдЗрдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж



рд╢рд╛рдпрдж рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ DateTime рд╕рдВрд░рдЪрдирд╛ рдХреНрдпрд╛ рд╣реИред рджрд┐рдирд╛рдВрдХ рд╕рдордпрд░реЗрдЦрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдорд╛рди 100 рдиреИрдиреЛрд╕реЗрдХрдВрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрд╛рдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдЯреАрдХ рддрд┐рдерд┐ 1 рдЬрдирд╡рд░реА, 0001 рдИрд╕реНрд╡реА рд╕рдиреН 00:00 рдХреЗ рдмрд╛рдж рд╕реЗ рдкрд╛рд░рд┐рдд рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдИ рдЧрдИ рд╣реИред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛ 628539264000000000 6 рдЕрдХреНрдЯреВрдмрд░ 1992, 00:00:00 рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред



рджрд┐рдирд╛рдВрдХ рд╕рдордп рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдлрд╝реАрд▓реНрдб рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ:



 private UInt64 dateData;
      
      





рдпрд╣ рднреА рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ .NET 2.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ 2 рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдбреЗрдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ, рдпреВрдЯреАрд╕реА - рд╕рдордиреНрд╡рд┐рдд рд╕рдордп, рд╕реНрдерд╛рдиреАрдп - рд╕реНрдерд╛рдиреАрдп рд╕рдордп, рдФрд░ рд╢реЗрд╖ 62 рдмрд┐рдЯреНрд╕ - рдЯрд┐рдХреНрд╕реЗрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ред рд╣рдо рдЗрди рджреЛрдиреЛрдВ рдмрд┐рдЯреНрд╕ рдХрд╛ рдЕрдиреБрд░реЛрдз рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



DateTime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреНрдпрд╛ рдмреБрд░рд╛ рд╣реИ?



рджрд┐рдирд╛рдВрдХ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП DateTime.Now рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ:



DateTime.Now
 public static DateTime Now { get { DateTime utc = DateTime.UtcNow; Boolean isAmbiguousLocalDst = false; Int64 offset = TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc(utc, out isAmbiguousLocalDst).Ticks; long tick = utc.Ticks + offset; if (tick > DateTime.MaxTicks) { return new DateTime(DateTime.MaxTicks, DateTimeKind.Local); } if (tick < DateTime.MinTicks) { return new DateTime(DateTime.MinTicks, DateTimeKind.Local); } return new DateTime(tick, DateTimeKind.Local, isAmbiguousLocalDst); } }
      
      







DateTime.Now рд╕рдВрдкрддреНрддрд┐ рдХреА рдЧрдгрдирд╛ DateTime.UtcNow рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рдордиреНрд╡рд┐рдд рд╕рдордп рдХреА рдЧрдгрдирд╛ рдкрд╣рд▓реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдСрдлрд╕реЗрдЯ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ DateTime.UtcNow рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛, рдЗрд╕рдХреА рдЧрдгрдирд╛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ:



DateTime.UtcNow
 public static DateTime UtcNow { get { long ticks = 0; ticks = GetSystemTimeAsFileTime(); return new DateTime(((UInt64)(ticks + FileTimeOffset)) | KindUtc); } }
      
      







DateTime.Now рдпрд╛ DateTime.UtcNow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдХреА рд╕рдЯреАрдХрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ



1 рдЯрд┐рдХ = 100 рдиреИрдиреЛрд╕реЗрдХреЗрдВрдб = 0.1 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб = 0.0001 рдорд┐рд▓реАрд╕реЗрдХрдВрдб = 0.0000001 рд╕реЗрдХрдВрдб



рддрджрдиреБрд╕рд╛рд░, рдПрдХ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдорд╛рдкрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ рдПрдХ рдорд╛рдк рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рдХрдо рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рд╕реНрдЯреЙрдкрд╡реЙрдЪ рд╡рд░реНрдЧ .NET 2.0 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рддрдм рд╕реЗ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИред рдпрд╣ рддрд░реАрдХреЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╣реА рд╕рдордп рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рд╕реНрдЯреЙрдкрд╡реЙрдЪ рд╡рд░реНрдЧ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:



рдЧреБрдг

  1. рдмреАрддрд╛ рд╣реБрдЖ - рдХреБрд▓ рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
  2. ElapsedMilliseconds - рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдХреБрд▓ рдмреАрддрд╛ рд╕рдордп рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
  3. ElapsedTicks - рдЯрд╛рдЗрдорд░ рдЯрд┐рдХ рдореЗрдВ рдХреБрд▓ рдмреАрддрд╛ рд╕рдордп рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
  4. IsRunning - рдПрдХ рдорд╛рди рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдЯрд╛рдЗрдорд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред


рддрд░реАрдХреЛрдВ

  1. рд░реАрд╕реЗрдЯ - рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреА рдорд╛рдк рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ;
  2. рдкреБрдирдГ рдЖрд░рдВрдн - рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдорд╛рдкрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдмреАрддреЗ рд╣реБрдП рд╕рдордп рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмреАрддреЗ рд╣реБрдП рд╕рдордп рдХреЛ рдорд╛рдкрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ;
  3. рд╢реБрд░реВ - рдПрдХ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп рдорд╛рдкрдирд╛ рд╢реБрд░реВ рдпрд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ;
  4. StartNew - рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХреЗ рдПрдХ рдирдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдмреАрддрд╛ рд╕рдордп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмреАрддреЗ рд╣реБрдП рд╕рдордп рдХреЛ рдорд╛рдкрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ;
  5. рд╕реНрдЯреЙрдк - рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдмреАрддрд╛ рд╕рдордп рдХреА рдорд╛рдк рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред


рдЦреЗрддреЛрдВ

  1. рдЖрд╡реГрддреНрддрд┐ - рдЯрд╛рдЗрдорд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рд░рд┐рдЯрд░реНрди рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ;
  2. IsHighResolution - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЯрд╛рдЗрдорд░ рдЙрдЪреНрдЪ-рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдЙрдВрдЯрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред


рдХреЛрдб рдЬреЛ рдХреБрдЫ рд╕реНрдЯреЗрдкрд╡реЙрдЪ рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЙрдкрд╡реЙрдЪ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:



 var sw = new Stopwatch(); sw.Start(); SomeOperation(); sw.Stop();
      
      





рдкрд╣рд▓реА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



 var sw = Stopwatch.StartNew(); SomeOperation(); sw.Stop();
      
      





рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди



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



рд╕реНрдЯреЙрдкрд╡реЙрдЪ рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:



 private const long TicksPerMillisecond = 10000; private const long TicksPerSecond = TicksPerMillisecond * 1000; private bool isRunning; private long startTimeStamp; private long elapsed; private static readonly double tickFrequency;
      
      





TicksPerMillisecond - 1 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ DateTime рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ;

TicksPerSecond - 1 рд╕реЗрдХрдВрдб рдореЗрдВ DateTime рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ;



isRunning - рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдЪрд╛рд╣реЗ рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛);

startTimeStamp - рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛;

рдмреАрддрд╛ рд╣реБрдЖ - рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рдЙрдкрд╛рдпреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛;



рдЯрд┐рдХрдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА - рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХреЗ рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдбреЗрдЯрд╛рдЗрдо рдореЗрдВ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред



рдПрдЪрдкреАрдИрдЯреА рдЯрд╛рдЗрдорд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдЯрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдбреЗрдЯрд╛рдЗрдо рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рд╕реНрдЯреИрдЯрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрдЯреЙрдкрд╡реЙрдЪ
 static Stopwatch() { bool succeeded = SafeNativeMethods.QueryPerformanceFrequency(out Frequency); if(!succeeded) { IsHighResolution = false; Frequency = TicksPerSecond; tickFrequency = 1; } else { IsHighResolution = true; tickFrequency = TicksPerSecond; tickFrequency /= Frequency; } }
      
      







рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдореБрдЦреНрдп рдкрд░рд┐рджреГрд╢реНрдп рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛, рдЬрд┐рд╕рдХрд╛ рд╕рдордп рдорд╛рдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рд╕реНрдЯреЙрдк рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред



рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдпрд╣ рдЙрдкрд╛рдпреЛрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ:



рдкреНрд░рд╛рд░рдВрдн
 public void Start() { if (!isRunning) { startTimeStamp = GetTimestamp(); isRunning = true; } }
      
      







рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдкрдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реНрдЯрд╛рд░реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред



рд╕реНрдЯреЙрдк рд╡рд┐рдзрд┐ рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд╣реИ:



рдмрдВрдж рдХрд░реЛ
 public void Stop() { if (isRunning) { long endTimeStamp = GetTimestamp(); long elapsedThisPeriod = endTimeStamp - startTimeStamp; elapsed += elapsedThisPeriod; isRunning = false; if (elapsed < 0) { // When measuring small time periods the StopWatch.Elapsed* // properties can return negative values. This is due to // bugs in the basic input/output system (BIOS) or the hardware // abstraction layer (HAL) on machines with variable-speed CPUs // (eg Intel SpeedStep). elapsed = 0; } } }
      
      







рд╕реНрдЯреЙрдк рд╡рд┐рдзрд┐ рдХреЛ рд░реЛрдХрдирд╛ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред



рджреЛрдиреЛрдВ рддрд░реАрдХреЗ GetTimestamp () рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЬреЛ рдХреЙрд▓ рдХреЗ рд╕рдордп рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:



GetTimestamp
 public static long GetTimestamp() { if (IsHighResolution) { long timestamp = 0; SafeNativeMethods.QueryPerformanceCounter(out timestamp); return timestamp; } else { return DateTime.UtcNow.Ticks; } }
      
      







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



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб



 Console.WriteLine(Stopwatch.GetTimestamp()); Console.WriteLine(DateTime.UtcNow.Ticks);
      
      





рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ



 5201678165559 635382513439102209
      
      





DateTime рдпрд╛ TimeSpan рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдЯрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИред рдЕрднрд┐рд▓реЗрдЦ



 var time = new TimeSpan(sw.ElaspedTicks);
      
      





рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛ред



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



GetElapsedDateTimeTicks
 private long GetElapsedDateTimeTicks() { long rawTicks = GetRawElapsedTicks();// get Stopwatch ticks if (IsHighResolution) { // convert high resolution perf counter to DateTime ticks double dticks = rawTicks; dticks *= tickFrequency; return unchecked((long)dticks); } else { return rawTicks; } }
      
      







рд╕рдВрдкрддреНрддрд┐ рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:



рдмреАрддрд╛ рд╣реБрдЖ, рдПрд▓рд╛рд╕реНрдкреЗрдбрдорд┐рд▓рд┐рд╕рдХрдВрдбреНрд╕
 public TimeSpan Elapsed { get { return new TimeSpan(GetElapsedDateTimeTicks()); } } public long ElapsedMilliseconds { get { return GetElapsedDateTimeTicks() / TicksPerMillisecond; } }
      
      







рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдмреБрд░рд╛ рд╣реИ?



MSDN рдХреЗ рд╕рд╛рде рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдЯ рдХрд╣рддрд╛ рд╣реИ: рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдереНрд░реЗрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, BIOS рдпрд╛ рдЕрдореВрд░реНрдд рдЙрдкрдХрд░рдг рдкрд░рдд (HAL) рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреЙрдк рдореЗрдердб рдореЗрдВ рдПрдХ if (рдмреАрддрд╛ рд╣реБрдЖ <0) рдХрдВрдбреАрд╢рди рд╣реИред



рдореБрдЭреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рдорд┐рд▓реЗ рдЬрд┐рдирдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдПрдЪрдкреАрдИрдЯреА рдХреЗ рдЧрд▓рдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред



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



рдореЛрдиреЛ рдореЗрдВ рд╕реНрдЯреЙрдкрд╡реЙрдЪ



рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореЛрдиреЛ рдореЗрдВ рд╕реНрдЯреЙрдкрд╡реЙрдЪ рд╡рд░реНрдЧ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдЪрдкреАрдИрдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╡рд┐рдВрдбреЛрдЬ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред



 public static readonly long Frequency = 10000000; public static readonly bool IsHighResolution = true;
      
      





рдореЛрдиреЛ рдореЗрдВ рд╕реНрдЯреЙрдкрд╡реЙрдЪ рд╣рдореЗрд╢рд╛ рдбреЗрдЯрд╛рдЗрдо рдШрдбрд╝рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрдЯрд╛рдЗрдо рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдкрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреЛрдб рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИред



Environment.TickCount



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



рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд░ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рд▓рдЧрд╛рддрд╛рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЯрд┐рдХрдХрд╛рдЙрдВрдЯ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд▓рдЧрднрдЧ 24.9 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдврд╝ рдЬрд╛рдПрдЧрд╛, рд╢реВрдиреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ Int32.MaxValue рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ Int32.MinVueue рдХреЗ рдорд╛рди рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдврд╝рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЕрдЧрд▓реЗ 24.9 рджрд┐рдиреЛрдВ рдореЗрдВ рдЦрд░реЛрдВрдЪред



рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ GetTickCount () рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдореВрд▓реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреА рд╕рдЯреАрдХрддрд╛ рдХрдо рд╣реИ (10 рдорд┐рд▓реАрд╕реЗрдХрдВрдб), рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдШрдбрд╝реА рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╡реНрдпрд╡рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдирд┐рд╖реНрдХрд░реНрд╖



рд╡рд┐рдВрдбреЛрдЬ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрдИ рдЯрд╛рдЗрдорд░ рд╣реЛрддреЗ рд╣реИрдВ (рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЖрдкрдХреЛ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдорд╛рдкрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ)ред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рдЯреАрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИрдВ (рдЯрд╛рдЗрдордЧреЗрдЯ рдЯрд╛рдЗрдо), рдЕрдиреНрдп рддреЗрдЬрд╝ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИрдВ (GetTickCount, GetSystemTime), рдФрд░ рддреАрд╕рд░рд╛, Microsoft рдХреЗ рдЕрдиреБрд╕рд╛рд░ рддреЗрдЬрд╝ рдФрд░ рд╕рдЯреАрдХ рд╣реИрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдореЗрдВ HPET рдЯрд╛рдЗрдорд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ: QueryPerformanceFrequency, QueryPerformanceCounterред



рд╕реНрдЯреЙрдкрд╡реЙрдЪ рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ HPET рдкрд░ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдЖрд╡рд░рдг рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рджреЛрдиреЛрдВ рдлрд╛рдпрджреЗ рд╣реИрдВ (рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдорд╛рдк) рдФрд░ рдиреБрдХрд╕рд╛рди (BIOS рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдПрдЪрдПрдПрд▓ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рдПрдЪрдкреАрдИрдЯреА рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЛ рдЧрдП рд╣реИрдВред



рд╕реНрдЯреЙрдкрд╡реЙрдЪ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдлрд╛рдпрджреЗ рдЕрднреА рднреА рдиреБрдХрд╕рд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред



All Articles