﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Точное время</title>
  <id>~/topic/3404/tochnoe-vremya/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-11T01:22:01Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3404" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/24095/</id>
    <title type="text">Залил я фикс в 4.1.8. Все равно больше плюсов, чем минусов. </title>
    <published>2013-02-17T18:07:46Z</published>
    <updated>2013-02-17T18:07:46Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Залил я фикс в 4.1.8. Все равно больше плюсов, чем минусов.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24094/</id>
    <title type="text">Mikhail Sukhov: Грубо говоря, детерминированность - это сложность алгоритма (не путать со сложностью...</title>
    <published>2013-02-17T18:03:22Z</published>
    <updated>2013-02-17T18:03:22Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24093)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
Грубо говоря, детерминированность - это сложность алгоритма (не путать со сложностью кода). А реальное время - это гарантия скорости.
Не понимаю как, &amp;quot;однозначность&amp;quot; завязана на &amp;quot;сложность&amp;quot; или на &amp;quot;скорость&amp;quot;.
Я имел в виду, что детерменированные счётчики в Windows - это, наверное, только счётчики затраченных операций, и то не факт. Все остальные могут показать любые значения. По настроению. :)&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24093/</id>
    <title type="text">VassilSanych: Если это и имелось в виду под детерменированностью, то должен огорчить: Windows - не с...</title>
    <published>2013-02-17T17:51:20Z</published>
    <updated>2013-02-17T17:51:20Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24092)" rel="nofollow" target="_blank"&gt;VassilSanych&lt;/a&gt;:&lt;/strong&gt;
Если это и имелось в виду под детерменированностью, то должен огорчить: Windows - не система реального времени&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Детерминированность != реальное время.&lt;/p&gt;
&lt;p&gt;Грубо говоря, детерминированность - это сложность алгоритма (не путать со сложностью кода). А реальное время - это гарантия скорости.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24092/</id>
    <title type="text">PS Если это и имелось в виду под детерменированностью, то должен огорчить: Windows - не система реал...</title>
    <published>2013-02-17T17:44:08Z</published>
    <updated>2013-02-17T17:44:43Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;PS
Если это и имелось в виду под детерменированностью, то должен огорчить: Windows - не система реального времени, поэтому точность StopWatch хоть и выше, но всё равно не идеальна. При этом и то, и другое одинаково зависит от общей загруженности процессора, потому что оба используют системные таймеры.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24091/</id>
    <title type="text">Mikhail Sukhov: Дело в не скорости исполнения, а в том, что в отличие от StopWatch, DateTime.Now - э...</title>
    <published>2013-02-17T17:34:37Z</published>
    <updated>2013-02-17T17:34:37Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24090)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
Дело в не скорости исполнения, а в том, что в отличие от StopWatch, DateTime.Now - это недетерминированная операция. Тоесть время может быть и практически мгновенным, а может и залипнуть на пару секунд. Это все зависит от текущей загруженности компьютера. StopWatch же гарантирует кол-во тактов, за которое может быть выполнена операция.
Ни та, ни другая операция не залипает.
при тех же 10000000 - оба суммарных значения бегают между 0.60 и 1.3 с (сборщик мусора шалит). Так что можно считать полное отсутствие задержки в обоих случаях.
Залипают только фактические значения DateTime.Now.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24090/</id>
    <title type="text">VassilSanych: Mikhail Sukhov: Между определением Now и замером Start может пройти некоторое время. Э...</title>
    <published>2013-02-17T17:23:26Z</published>
    <updated>2013-02-17T17:23:26Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24089)" rel="nofollow" target="_blank"&gt;VassilSanych&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24087)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
Между определением Now и замером Start может пройти некоторое время. Эта погрешность будет потом тянуться в течении всей жизни приложения.
10000000 запусков в цикле - 1.12 с
Можно считать, нет погрешности.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Дело в не скорости исполнения, а в том, что в отличие от StopWatch, DateTime.Now - это недетерминированная операция. Тоесть время может быть и практически мгновенным, а может и залипнуть на пару секунд. Это все зависит от текущей загруженности компьютера. StopWatch же гарантирует кол-во тактов, за которое может быть выполнена операция.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24089/</id>
    <title type="text">Mikhail Sukhov: Между определением Now и замером Start может пройти некоторое время. Эта погрешность...</title>
    <published>2013-02-17T17:16:30Z</published>
    <updated>2013-02-17T17:16:30Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24087)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
Между определением Now и замером Start может пройти некоторое время. Эта погрешность будет потом тянуться в течении всей жизни приложения.
10000000 запусков в цикле - 1.12 с
Можно считать, нет погрешности.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24087/</id>
    <title type="text">VassilSanych: А нет. Это наводки от прекомпиляции. Одинаковый перфоманс. _startDate = DateTime.Now; ...</title>
    <published>2013-02-17T17:05:36Z</published>
    <updated>2013-02-17T17:05:36Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24081)" rel="nofollow" target="_blank"&gt;VassilSanych&lt;/a&gt;:&lt;/strong&gt;
А нет. Это наводки от прекомпиляции.
Одинаковый перфоманс.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;_startDate = DateTime.Now;
_timer.Start();&lt;/p&gt;
&lt;p&gt;Между определением Now и замером Start может пройти некоторое время. Эта погрешность будет потом тянуться в течении всей жизни приложения.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24081/</id>
    <title type="text">А нет. Это наводки от прекомпиляции. Одинаковый перфоманс. </title>
    <published>2013-02-17T16:14:12Z</published>
    <updated>2013-02-17T16:14:12Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;А нет. Это наводки от прекомпиляции.
Одинаковый перфоманс.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24080/</id>
    <title type="text">Я думал, что перфоманс моего вызова будет хуже, но не значительно, но оказалось: На 10000 вызовов Da...</title>
    <published>2013-02-17T16:09:20Z</published>
    <updated>2013-02-17T16:09:20Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Я думал, что перфоманс моего вызова будет хуже, но не значительно, но оказалось:
На 10000 вызовов&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DateTime.Now + NowOffset = 0.0892 с&lt;/li&gt;
&lt;li&gt;LoggingHelper.Now = 0,0002399 с&lt;/li&gt;
&lt;/ul&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24078/</id>
    <title type="text">VassilSanych: Как я написал, целью было изменить LoggingHelper.Now Да, теперь понятно. Интересно, на...</title>
    <published>2013-02-17T15:53:30Z</published>
    <updated>2013-02-17T15:53:30Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24077)" rel="nofollow" target="_blank"&gt;VassilSanych&lt;/a&gt;:&lt;/strong&gt;
Как я написал, целью было изменить LoggingHelper.Now&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Да, теперь понятно. Интересно, насколько перфоманс изменился.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24077/</id>
    <title type="text">Mikhail Sukhov: А причем тут лог? Был переделан метод, синхронизирующий время с атомными часами. Как...</title>
    <published>2013-02-17T15:24:04Z</published>
    <updated>2013-02-17T15:24:04Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24076)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
А причем тут лог? Был переделан метод, синхронизирующий время с атомными часами.
Как я написал, целью было изменить
LoggingHelper.Now
Которое используется практически везде. В частности в логах.
Синхронизация времени просто приведена в соответствие с новой логикой вычисления LoggingHelper.Now.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24076/</id>
    <title type="text">VassilSanych: Это не позволяет видеть время выполнения операций в логе, не запуская лишний раз профа...</title>
    <published>2013-02-17T15:20:36Z</published>
    <updated>2013-02-17T15:20:36Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24073)" rel="nofollow" target="_blank"&gt;VassilSanych&lt;/a&gt;:&lt;/strong&gt;
Это не позволяет видеть время выполнения операций в логе, не запуская лишний раз профайлер.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;А причем тут лог? Был переделан метод, синхронизирующий время с атомными часами.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24073/</id>
    <title type="text">Mikhail Sukhov: Я так понимаю, смысл в том, чтобы повысить точность передаваемого dtNow, а не добавл...</title>
    <published>2013-02-17T15:13:34Z</published>
    <updated>2013-02-17T15:13:34Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24072)" rel="nofollow" target="_blank"&gt;Mikhail Sukhov&lt;/a&gt;:&lt;/strong&gt;
Я так понимаю, смысл в том, чтобы повысить точность передаваемого dtNow, а не добавление миллисекунд (DateTime.Now имеет точность до наносекунд, другое дело, что его время вычисления дискретно)?
Смысл в реализации Now. Остальное всё - следствия и частности.
DateTime.Now при частом вызове просто возвращает прошлые значения.
Погрешность DateTime.Now при этом составляет десятки миллисекунд.
Это не позволяет видеть время выполнения операций в логе, не запуская лишний раз профайлер.
Ну и просто лог выглядит глупо :)&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24072/</id>
    <title type="text">VassilSanych: ODE0� Я так понимаю, смысл в том, чтобы повысить точность передаваемого dtNow, а не до...</title>
    <published>2013-02-17T15:07:05Z</published>
    <updated>2013-02-17T15:07:05Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(24070)" rel="nofollow" target="_blank"&gt;VassilSanych&lt;/a&gt;:&lt;/strong&gt;
ODE0�&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я так понимаю, смысл в том, чтобы повысить точность передаваемого dtNow, а не добавление миллисекунд (DateTime.Now имеет точность до наносекунд, другое дело, что его время вычисления дискретно)?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/24070/</id>
    <title type="text">Раз уж есть исходники, вот небольшая доработка для тех, кому позарез нужны миллисекунды public stati...</title>
    <published>2013-02-17T13:48:22Z</published>
    <updated>2013-02-17T13:48:22Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.com/users/6491/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Раз уж есть исходники, вот небольшая доработка для тех, кому позарез нужны миллисекунды&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public static class LoggingHelper
	{
		private static readonly Stopwatch _timer;
		private static readonly DateTime _startDate;
		static LoggingHelper()
		{
			_timer = new Stopwatch();
			_startDate = DateTime.Now;
			_timer.Start();
		}

		/// &amp;lt;summary&amp;gt;
		/// Текущее время.
		/// &amp;lt;/summary&amp;gt;
		public static DateTime Now
		{
			get { return _startDate + _timer.Elapsed + NowOffset; }
		}

		/// &amp;lt;summary&amp;gt;
		/// Временное смещение. Неоходимо устанавливать, когда торговая программа работает с неточными настройками локального времени.
		/// Значение &amp;lt;see cref=&amp;quot;Now&amp;quot;/&amp;gt; будет корректироваться в зависимости от установленного значения.
		/// &amp;lt;/summary&amp;gt;
		public static TimeSpan NowOffset { get; set; }

		private static TimeSpan _timeZoneOffset = TimeZoneInfo.Local.BaseUtcOffset;

		/// &amp;lt;summary&amp;gt;
		/// Временное смещение временной зоны.
		/// &amp;lt;/summary&amp;gt;
		public static TimeSpan TimeZoneOffset
		{
			get { return _timeZoneOffset; }
			set { _timeZoneOffset = value; }
		}

		/// &amp;lt;summary&amp;gt;
		/// Синхронизировать &amp;lt;see cref=&amp;quot;NowOffset&amp;quot;/&amp;gt; между локальным временем на компьютере и NTP сервером в интернете.
		/// &amp;lt;/summary&amp;gt;
		/// &amp;lt;param name=&amp;quot;timeout&amp;quot;&amp;gt;Таймаут синхронизации в милисекундах.&amp;lt;/param&amp;gt;
		public static void SyncMarketTime(int timeout = 5000)
		{
			var dtNow = _startDate + _timer.Elapsed;
			NowOffset = new NtpClient().GetLocalTime(TimeZoneInfo.Local, timeout).Subtract(dtNow);
		}
.....

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Критика приветствуется&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>