Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2013, 21:37   #11
PathTheir
Пользователь
 
Аватар для PathTheir
 
Регистрация: 14.04.2013
Сообщений: 62
По умолчанию

почему не использовать ассемблер?
пишу код по памяти, возможны ошибки
Код:
function GetTSC() : Int64;
asm
    RDTSC
end;
функция вернет кол-во тактов процессора.
Вычисляем значение, вычитаем из него прошлое.
Получаем кол-во тактов прошедших с последнего момента
1 такт ~ 500 наносекунд
PathTheir вне форума Ответить с цитированием
Старый 15.04.2013, 21:40   #12
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...еще раз http://programmersforum.ru/showpost....3&postcount=19
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.04.2013, 21:42   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
функция вернет кол-во тактов процессора.
Ну да, а обращаться к этой функции с какой частотой? Или в бесконечном цикле, загрузив процессор на 100%
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.04.2013, 21:46   #14
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну да, а обращаться к этой функции с какой частотой? Или в бесконечном цикле, загрузив процессор на 100%
в IDLE формы обращайся.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 15.04.2013, 22:12   #15
PathTheir
Пользователь
 
Аватар для PathTheir
 
Регистрация: 14.04.2013
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну да, а обращаться к этой функции с какой частотой? Или в бесконечном цикле, загрузив процессор на 100%
Да, согласен - не подумал об этом. В любом случае, как бы мы не старались, погрешность измерений будет очень большой (500 наносекунд - очень много).

Если будем обращаться в IDLE, то все равно загрузим весь процессор, поскольку она будет IDLE почти постоянно, а если пользователь еще и действия проводить будет, то мы получим еще большую погрешность.
PathTheir вне форума Ответить с цитированием
Старый 15.04.2013, 22:15   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от PathTheir Посмотреть сообщение
почему не использовать ассемблер?
пишу код по памяти, возможны ошибки
Код:
function GetTSC() : Int64;
asm
    RDTSC
end;
функция вернет кол-во тактов процессора.
Вычисляем значение, вычитаем из него прошлое.
Получаем кол-во тактов прошедших с последнего момента
1 такт ~ 500 наносекунд
Тут есть подводные камни.
Счетчик тактов в общем случае у каждого ядра свой.
А как диспетчер разбросает задачи по потокам - его личное дело.
Так что мы можем вычитать счетчик одного ядра из счетчика другого.
И здесь можно получить все, что угодно, в том числе и отрицательные числа.

В Windows есть альтернатива:
QueryPerformanceFrequency
и
QueryPerformanceCounter
s-andriano вне форума Ответить с цитированием
Старый 15.04.2013, 22:18   #17
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от jone Посмотреть сообщение
Пофигу на неточности как сделать больше таймеров)

-3 это таймер * 1 000 000
получаем действие ~=нано секунде
Это у Вас что-то с арифметикой.

А много таймеров:
1. Не нужно.
2. Вам все равно не поможет.
s-andriano вне форума Ответить с цитированием
Старый 15.04.2013, 22:26   #18
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от PathTheir Посмотреть сообщение
Да, согласен - не подумал об этом. В любом случае, как бы мы не старались, погрешность измерений будет очень большой (500 наносекунд - очень много).

Если будем обращаться в IDLE, то все равно загрузим весь процессор, поскольку она будет IDLE почти постоянно, а если пользователь еще и действия проводить будет, то мы получим еще большую погрешность.
игрушку писал на андорре, там именно в идл все происходило.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 15.04.2013, 23:54   #19
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

А я полюбопытствую-таки у автора - как вы с помощью пяти тысяч таймеров собираетесь считать наносекунды? Мне для общего развития бы...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 16.04.2013, 09:39   #20
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
задача нано секунду вывести на экран... тоесть ЧАС.МИНУТА.СЕКУНДА.*.*.*.*.*.*.*.*. *
Смысл имеют только ИНТЕРВАЛЫ времени.
Секундомер (от момента старта до настоящего времени)
Часы (от начала суток до настоящего момента).
Часы с календарем (от начала месяца до настоящего момента)
календарь (с начала года до настоящего момента / от начала эры до настоящего момента)
Таймер (НЕ тот который в программе, а тот который на кухне в микроволновке, духовке, .. ) секундомер обратного отсчета (с момента запуска до времени "Ч").
Какую наносекунду вы собираетесь выводить?
Какой интервал времени так "тщательно" собираетесь измерить?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать окно больше чем экран монитора gunsoy Win Api 7 01.02.2013 04:54
Работа с таймеров в Qt papos Общие вопросы C/C++ 0 14.11.2010 20:05
Менеджер таймеров Alex Cones Общие вопросы Delphi 9 11.11.2010 19:34
Где найти исходники на Java( 1 проект - больше 1000 классов, 2 проект - больше 100, 3 проект - больше 10) Pti44ka Общие вопросы по Java, Java SE, Kotlin 2 09.09.2010 21:31
Варианты реализации программы с использованием таймеров Casper-SC Общие вопросы Delphi 10 28.11.2009 19:18