![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 19.11.2011
Сообщений: 198
|
![]()
Необходимо определить время выполнения команды.
В асм'е я не силен, поэтому прошу помощи. Чтобы правильно определить время нужно все из-под доса делать, как я понимаю. Измерять время 1 команды глупо имхо, поэтому планируется сделать цикл из, например, 10000 одинаковых действий, замеряем его время, потом пускаем пустой цикл и тоже замеряем его время, находим разницу и делим на количество итераций цикла. Дак вопрос, а как измерить время? Использую RDTSC. Вот код: Код:
|
![]() |
![]() |
![]() |
#2 |
Регистрация: 15.09.2013
Сообщений: 8
|
![]()
Зависит от процессора. Задействовать удастся только одно ядро. Инструкция рода Mov eax,ebx выполняется за 2 такта процессора. Делишь тактовую частоту своего процессора на 2 и получаешь число инструкций, которые твой процессор выполняет за секунду. Но это при голом железе. В ОС это будет работать на порядок медленнее.
|
![]() |
![]() |
![]() |
#3 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
так это, timer stamp counter работает на некоторой частоте, можно поднять мануалы на проц и найти значение этой частоты. но на практике, используется функционал системы для выполнения длительной задержки в несколько секунд (delay_time), определяется кол-во отсчетов TSC для этой задержки (delay_count). ну, а потом, при использовании TSC, считается кол-во отсчетов между двумя событиями (event_count), тогда время между двумя событиями
event_time = event_count*delay_time/delay_count 55 мс - какая-то с потолка взятая цифра. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 19.11.2011
Сообщений: 198
|
![]()
Не с потолка цифра
http://emanual.ru/download/8234.html#ch5_1 Системный таймер тикает 18,2 раз в секунду f.hump, можно пример хоть какой-нибудь? |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
![]()
alexey_kip, Ваш код не имеет ни малейшего отношения к системному таймеру. RDTSC возвращает количество тактов процессора с момента последнего сброса.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 19.11.2011
Сообщений: 198
|
![]()
Я предупредил, что не силен в asm'е и написал, чтобы мне помогли
|
![]() |
![]() |
![]() |
#7 | |||
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]() Цитата:
Цитата:
Цитата:
|
|||
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 19.11.2011
Сообщений: 198
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]()
ОС какая? Под Windows нужно использовать QueryPerformanceCounter/QueryPerformanceFrequency, иначе на многоядерных машинах возможна хрень.
В разработке: воспроизводственный контур ИТ
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 19.11.2011
Сообщений: 198
|
![]()
Я DOS планирую использовать. Если я правильно понимаю там одно ядро только участвует и нет лишних фоновых программ
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
cmd. частично не работает отключение вывода результата выполнения команды | goluzov | Общие вопросы C/C++ | 1 | 06.12.2012 12:10 |
Время выполнения команды на С | nastya2112 | Общие вопросы C/C++ | 4 | 06.11.2012 11:48 |
Оценка среднего времени выполнения команды(на просто С) | nastya2112 | Помощь студентам | 0 | 06.11.2012 11:21 |
Вложенный вызов обработчика ( проще - дублирование выполнения команды) | DeKot | Общие вопросы Delphi | 2 | 08.01.2012 22:11 |