Узнать процессорное время из MS-DOS приложения

Тема в разделе "WASM.BEGINNERS", создана пользователем OioVologda, 20 мар 2007.

  1. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    OioVologda
    Насколько я помню, код в ТП получается не шибко раздутый. Ты сгенери и нам потом скажешь :)
    Тэк-с, значица программа еще и от случайных начальных данных зависит... Тогда у тебя результатом твоих исследований наверное должна быть таблица с N строками?
    Придется оценивать тики каждой ветки и назначать им вес в зависимости от вероятности данной комбинации начальных данных.
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Atlantic
    Ну уж кнопку reset не завесит ;))
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Nouzui
    Intel VTune оценивает поинструктно.
    AFAIR это значение вычисляется при инициализации Executive-подсистемы и зависит от пары параметров.
     
  4. OioVologda

    OioVologda New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2006
    Сообщения:
    91
    n0name
    Поточнее бы насчет этих параметров...
     
  5. OioVologda

    OioVologda New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2006
    Сообщения:
    91
    crypto
    В общем - то таблица процессорного времени по каждому набору данных - то, что надо получить...
    А как оценивать вес цикла?
     
  6. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    n0name
    знать бы, ка она это делает.. впрочем, интеловский продукт для интеловских же процов
    а тут идет речь о досовской программе и о досовских профилерах.. ))

    OioVologda
    реалтайм - самая реальная идея.. вот увидишь, у тебя даже мышка перестанет реагировать, настолько монопольно твоя прога займет процессор.. ))
     
  7. OioVologda

    OioVologda New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2006
    Сообщения:
    91
    Nouzui
    Попробую реалтайм...
     
  8. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    пробовал уменьшить длителность кванта ее в 98й.. не очень то заметно (Sleep точнее не стал)
    в нтях не загонялся (даже не знаю, где эти параметры искать).. но, насколько я понимаю, 100 нс все равно поставить не удастся, а если даже выставить доли миллисекунды, ззаметно увеличатся накладные расходы на процессорное время. Все затормоииит! хотя, возможно, точность действительно возрастет
     
  9. OioVologda

    OioVologda New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2006
    Сообщения:
    91
    Да я уж не надеюсь на 100нс. :) В 100 миллисекунд то уложиться бы...
     
  10. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    в 100 мс уложишься только так.. хотя опять же, измерять погрешность нужно не в мс, а в процентах
     
  11. OioVologda

    OioVologda New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2006
    Сообщения:
    91
    Теоретически, кусок кода может работать достаточно долго, так что 100 мс. - в общем то даже очень хорошо.
    Единственный вопрос - все эти функции вызываются из под винды, а не из под MS-DOS приложения.
     
  12. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    GetTickCount заменяется чтением какого-то адреса памяти, QueryPerformanceCounter заменяется на RDTSC, не знаю только, выполнится ли она под vdm
     
  13. OioVologda

    OioVologda New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2006
    Сообщения:
    91
    Не факт, что в vdm GetTickCount эквивалентен адресу в памяти. RDTSC под vdm вроде бы выполняется, но по моему лучше как нибудь через что-то похожее на GetProcessTimes, но она под vdm точно не работает.
     
  14. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    если vdm realtim'овый, rdtsc ничуть не хуже GetProcessTime'сов..
     
  15. OioVologda

    OioVologda New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2006
    Сообщения:
    91
    Скорее всего "реалтайм" + rdtsc как раз и будет то что нужно. Только вот перевод из тактов в миллисекунды делать придется.
     
  16. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    нетривиальная задача.. ))
    QueryPerformanceFrequency
     
  17. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Nouzui
    QueryPerformanceFrequency - это далеко не всегда частота процессора. На моем компе она выдает 3.17 МГц :) Вообще, по поводу измерения времени на компе очень неплохая статья есть у Касперски, только не помню, как называется.
     
  18. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Кстати, да.. QueryPerformanceCounter - не обязательно TSC, но обычно именно оно
    а у тебя какой проц?
     
  19. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    OioVologda
    Кол-во тактов на один цикл*кол-во циклов
    или, если кол-во циклов - переменная величина
    Кол-во тактов на один цикл*среднее кол-во циклов.

    А вообще тебе нужно оценивать величину обработки в цикле сверху (т.е. искать максимальное значение).
     
  20. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Nouzui
    Дома на Athlon 64 выдает 3.17 МГц, на предыдущем компе (Athlon XP) выдавало 1.19 МГц, на работе на P4 3.06 ГГц выдает 3077.60 МГц.