Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нестабильность значения Hz с вставкой на ассм

96K
31 декабря 2015 года
Lev Brovchenkov
1 / / 31.12.2015
на сайте
codenet.ru
с которого взял пример Кода, получающего Hz процессора
Код:
function GetCPUSpeed(): string;
const DelayTime = 500;
var TimerHi : DWORD;
     TimerLo : DWORD;
     PriorityClass : Integer;
     Priority : Integer;
begin
  PriorityClass := GetPriorityClass(GetCurrentProcess);
  Priority := GetThreadPriority(GetCurrentThread);
  SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
  SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
  Sleep(10);
  asm
    DW 310Fh // rdtsc
    MOV TimerLo, EAX
    MOV TimerHi, EDX
  end;
  Sleep(DelayTime);
  asm
    DW 310Fh // rdtsc
    SUB EAX, TimerLo
    SBB EDX, TimerHi
    MOV TimerLo, EAX
    MOV TimerHi, EDX
  end;
  SetThreadPriority(GetCurrentThread, Priority);
  SetPriorityClass(GetCurrentProcess, PriorityClass);
  Result := 'Частота: '+FloatToStr(TimerLo / (1000.0 * DelayTime))+' Hz';
end;
Ну и чуть изменил его. (не влияюще)
После использования кода обнаружил, что частота на выходе (каждые 1000 мс записывается в блокнот) Дробная, так еще и разная)
Скорее всего я туплю, просто на ассм я не пишу, и мне непонятно поведение функции.
Вопрос: Откуда нестабильность значения, и откуда дробное значеие.
7
01 января 2016 года
@pixo $oft
3.4K / / 20.09.2006
Как ты думаешь, слово Float в названии функции FloatToStr что значит? ☺
А разная она потому, что даже с приоритетами REALTIME/CRITICAL не удастся добиться точности реального времени. К слову, используется только TimerLo, но по идее, в TimerHi вряд ли будет отличное от 0 значение (это очень большая тактовая частота должна быть).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог