Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.28;
Скачать: CL | DM;

Вниз

Про точные интервалы времени.....................   Найти похожие ветки 

 
Kettle of delphi   (2002-03-14 03:24) [0]

Здравствуйте.
Такой вопрос: Хоть примерно, сколько времени занимает вот эта команда: Label1.Caption := "!"; ?
Cколько примерно времени занимает вычисление синуса?

И почему в следующем коде:

procedure TForm1.Button4Click(Sender: TObject);
var PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
QueryPerformanceCounter(Preceding64);
QueryPerformanceCounter(Current64);
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Label5.Caption := FloatToStr(Preceding64);
Label8.Caption := FloatToStr(Current64);
Label11.Caption := FloatToStr(Current64 - Preceding64);
end;

(Current64 - Preceding64) дает 6 тактов счетчика, что есть, примерно, 5 микросекунд! - ?


 
Johnmen ©   (2002-03-14 09:49) [1]

>Cколько примерно времени занимает вычисление синуса?

0. если использовать бумагу и карандаш - то ок. 3 мин
1. если использовать счеты - то около 5 минут
2. если ЕС1022 - то около 1 мс
3. если IBM9370 - ок. 400 мкс

Считаю это полным ответом на все 3 вопроса !


 
Kettle of delphi   (2002-03-14 11:14) [2]

А приведенный код под ЕС1022 или IBM9370 тоже будет работать, после того, как установить на эти машины Delphi? :)

Если кто-то еще мыслит на столько же абстрактно, то поставлю вопрос так: сколько примерно времени будет вычисляться синус на компьютере с процессором:

1. Pentium 100,
2. Pentium II 300,
3. Pentium III 500,
4. Pentium III 1000,
5. Pentium IV 2 GGz?

и почему в приведенном коде директивы:
QueryPerformanceCounter(Preceding641);
QueryPerformanceCounter(Current64);

записанные ПОСЛЕДОВАТЕЛЬНО, дают значения счетчика, различающиеся на 5-6 тиков!?


 
Alx2 ©   (2002-03-14 11:17) [3]

Рекомендую Intel VTune для замера скорострельности


 
wicked ©   (2002-03-14 11:40) [4]

а еще можно использовать RDTSC и делить на тактовую частоту... уж точно не ошибёшся...


 
Johnmen ©   (2002-03-14 11:50) [5]

>Kettle of delphi : Слава Богу не обиделся и понял правильно !
А на указанные машины можно поставить PASCAL !
Код будет совершенно другим !



 
Kettle of delphi   (2002-03-14 11:55) [6]

ВОТ ГЛАВНЫЙ ВОПРОС:

Почему директивы
QueryPerformanceCounter(Preceding641);
QueryPerformanceCounter(Current64);

записанные, как видно, ПОСЛЕДОВАТЕЛЬНО, дают значения счетчика, различающиеся на 5-6 тиков!?


 
Kettle of delphi   (2002-03-14 14:28) [7]

ааууу...


 
Alx2 ©   (2002-03-14 14:36) [8]

Есть такая вещь, как прерывания... Отчасти это они виноваты


 
Алексей Петров ©   (2002-03-14 15:26) [9]

Вообще-то на выполнение QueryPerformanceCounter тоже нужно время, хоят и не большое.


 
MBo ©   (2002-03-14 15:33) [10]

Принцип неопределенности - нельзя произвести сколь угодно точные измерения, поскольку этим вносим возмущение в систему - и для процессорных квантов времени действует!


 
Kettle of delphi   (2002-03-14 16:23) [11]

Но неужели процессор Pentium III выполняет директиву QueryPerformanceCounter 4-6 микросекунд?

Предположим, требуется "выжать" из компьютера реакцию с частотой QueryPerformanceFrequency - т.е. меньше 1 микросекунды. Я понимаю, что ОС Windows для этого не приспособлена, но ведь есть теоретическая возможность! Мыслю так: Сделать программу, загрузить ее вместо Explorer.exe (через system.ini) с максимальным приоритетом. Кто-нибудь может посоветовать, на сколько реально работающим будет такой подход? Требуется обмениваться данными с интерфейсной платой на частоте миллион герц (т.е. ~ 1 микросекунда).

QNX приспособлена как раз для подобных целей. Но я не знаю, есть ли там средство разработки программ, базирующееся на языке Pascal?


 
MBo ©   (2002-03-14 16:42) [12]

Говорят, что GNU-сный Pascal (в исходниках) можно скомпилировать под QNX


 
wicked ©   (2002-03-14 17:07) [13]

2 MBo ©
по заявлению разработчиков free pascal можно перенести на любую платформу, где имеет место быть gnu c... правда, можно упереться в rtl...



Страницы: 1 вся ветка

Текущий архив: 2002.03.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
6-91026
Ramid
2002-01-16 13:37
2002.03.28
Доспуп к свойтвам Internet Explorer (СОМ) при работе с SHTTP, а работа с СОМ при использовании потоков


1-90933
Сержжж
2002-03-14 11:27
2002.03.28
Патч к Delphi5 для работы в XP


1-90868
Juckser
2002-03-05 20:53
2002.03.28
Как сделать, чтобы при открытии Wave-файла запускалась моя программа, и MediaPlayer в ней, воспроизвел этот файл?


4-91099
Ted
2002-01-27 07:38
2002.03.28
Как закрыть все приложения кроме моего?????????


6-91010
НЕО
2002-01-14 16:09
2002.03.28
!!! ЛОГИН текущего пользователя