Datetime.now.ticks - нафига такая точность, если обновляется он раз в секунду?

Тема в разделе ".NET - Общие вопросы по языкам", создана пользователем EugenOS, 11 июл 2015.

  1. EugenOS

    EugenOS Active Member

    Регистрация:
    22 июл 2007
    Сообщения:
    27
    Симпатии:
    0
    Добрый день всем.
    Имею такую проблему. Для мониторинга времени работы операций добавил в свою программу опцию измерения времени опрераций:
    Код (C++):

    #if timelog
            private System.DateTime timerStart;
            String timelog_path;
            private void timeStart() { timerStart = System.DateTime.Now; }
            private void timeInit()
            {            
                timelog_path = Application.StartupPath + "\\timelog";
                System.IO.File.WriteAllText( timelog_path + "\\timelog.txt", Environment.NewLine );
            }
            private void timeLog(String hdr)
            {
                System.DateTime timerEnd = System.DateTime.Now;
                TimeSpan ts = timerEnd.Subtract(timerStart);
                System.IO.File.AppendAllText( timelog_path + "\\timelog.txt", Environment.NewLine + hdr + " " + ts.Milliseconds + "ms. " + ts.Ticks + " ticks. ["
                     + timerStart.Millisecond + ":" + timerStart.Ticks + "..."+ timerEnd.Millisecond + ":" + timerEnd.Ticks + "]");
            }
    #endif
     
    использую следующим образом (например хочу знать время получения массива сортированных ключей
    из SortedDictionary):
    Код (C++):
    #if timelog
                timeStart();
    #endif
                ICollection<UInt64> keys = checks.Keys;
    #if timelog
                timeLog( "527:: ICollection<UInt64> keys = checks.Keys;" );
    #endif
     
    учитывая, что в данном случае создается и копируется массив, время будет всяко больше 10 наносекунд. Но я имею около 10 таковых операций с результатом времени 0, и одну со временем 1001 с хвостиком миллисекунда. Т.е. на лицо обновление DataTime.Now раз в секунду. Спрашивается - нафига такая высокая точность, если время обновляется так редко?
    Может какие опции есть системные?
    Пока попробую воспользоваться Environment.Ticks (но тут только миллисекунды) ну или еще может GetTickCount из кернела импортировать...но опять же там, емнип (пойду посмотрю точно), тоже милисекунды...Вопрос что делать????
     
  2. EugenOS

    EugenOS Active Member

    Регистрация:
    22 июл 2007
    Сообщения:
    27
    Симпатии:
    0
    Я соврал, к стати, не 1001 миллисекунд, а 1001 тиков. Но все равно, - не верю что эта операция занимает менее 10 наносекунд. Элементов-то больше тысячи.
    Вот кусок "тайм-лога" программы:
    Код (Text):
    527:: ICollection<UInt64> keys = checks.Keys; 0ms. 0 ticks. [993:635722235399934216...993:635722235399934216]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [125:635722235401254291...125:635722235401254291]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [326:635722235403264406...326:635722235403264406]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [483:635722235404834496...483:635722235404834496]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [626:635722235406264578...626:635722235406264578]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [757:635722235407574653...757:635722235407574653]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [878:635722235408784722...878:635722235408784722]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [30:635722235410304809...30:635722235410304809]
    549-557:: if( key >> 16  != baseFileIdx ){...} 0ms. 0 ticks. [154:635722235411544880...154:635722235411544880]
    549-557:: if( key >> 16  != baseFileIdx ){...} 1ms. 10001 ticks. [343:635722235413434988...344:635722235413444989]
     
    Все по ноль и вдруг один сразу 1001.
     
  3. a0z

    a0z Well-Known Member

    Регистрация:
    15 мар 2011
    Сообщения:
    109
    Симпатии:
    0
    Используй Stopwatch. У меня даёт точность до тика.
     
Загрузка...
Похожие Темы - Datetime now ticks
  1. Kozolick
    Ответов:
    0
    Просмотров:
    137
  2. garrick
    Ответов:
    12
    Просмотров:
    2.718
  3. vvlad
    Ответов:
    9
    Просмотров:
    2.278
  4. dimat
    Ответов:
    12
    Просмотров:
    4.130
  5. wowa
    Ответов:
    11
    Просмотров:
    4.357

Поделиться этой страницей