Форум: "Прочее";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];
ВнизСкорость выполнения алгоритма Найти похожие ветки
← →
aka (2011-12-12 17:01) [0]Никогда с этим не сталкивался. Как это правильнее сделать "измерение" ?
← →
clickmaker © (2011-12-12 17:06) [1]запомнить время начала, потом вычесть его из времени конца.
Желательно сделать несколько тестов и взять среднее
← →
Anatoly Podgoretsky © (2011-12-12 17:06) [2]> aka (12.12.2011 17:01:00) [0]
Зависит от точности.
← →
stas © (2011-12-12 17:20) [3]aka (12.12.11 17:01)
а если выполняется очень быстро, то прокрутить его в цикле.
← →
aka (2011-12-12 18:23) [4]
> Anatoly Podgoretsky © (12.12.11 17:06) [2]
Хотя бы грубо-приблизительно?
Я понимаю это примерно так:
var
start, stop, speed : cardinal;
begin
start := GetTickCount;
//тестируемый код
stop := GetTickCount;
speed := stop - start;
Выкидывает то "0", то пяти разрядное число.
А как можно получить текущую дату с точностью до миллисекунд.
Или точность системной даты ограничивается секундами?
← →
Rouse_ © (2011-12-12 19:20) [5]миллисекунды это низкая точность, за миллисекунду много чего можно успеть сделать. Пошукай на предмет счетчиков производительности
← →
Pavia © (2011-12-12 19:36) [6]Вот выбирай.
http://en.wikipedia.org/wiki/List_of_performance_analysis_tools
> Выкидывает то "0", то пяти разрядное число.
Случаем не под Linux+Wine запускаешь?
А примерно алгоритм какой?
← →
Pavia © (2011-12-12 20:26) [7]Замеры скорости вещь тонкая есть нюансы.
1) Не доверяйте таймерам. Их частенько корректируют. Иногда для ускорения. Иногда чтобы спрятать задержку. Иногда просто потому что в очереди сообщений много набралось.
Так что я меряю по нескольким таймерам.
2) Плюс ещё у меня совет прогонять алгоритм в цикле и усреднять время. Это из метрологии нужно чтобы избавиться от случайных ошибок. Но не спасает от ошибок метода измерения.
3) Плюс ещё есть нюансы, как то виндоус многозадачная ОС. Что оказывает свои влияния. Задача может прерываться. Правда это не так страшно так как задача с активным окном получает наивысший приоритет. Это значит что вашу задача некогда не прервётся. А если прервётся, то не надолго. Не надолго это значит что при следующем кванте или добровольном передаче контроля вы опять получите контроль.
С многозадачностью можно еще бороться, а можно сотрудничать.
4) По поводу точности. Точность бывает разная есть абсолютная, а есть относительная.
В целом цикл решает проблему повышения точности.
← →
Inovet © (2011-12-12 21:00) [8]> [7] Pavia © (12.12.11 20:26)
> Задача может прерываться
Слово "может" тут лишнее.
← →
Pavia © (2011-12-12 21:04) [9]
> Слово "может" тут лишнее.
А докажи. Сделай программу которая наглядно покажет, что есть прерывания и что они выходят за допуск ошибки измерения.
← →
Inovet © (2011-12-12 21:27) [10]> [9] Pavia © (12.12.11 21:04)
Процесс о прерывании себя ОС, которое переключение на другой контекст, ничего знать не должен, но может узнать, получив значения каких-нибудь внешних аппаратных счётчиков.
← →
Pavia © (2011-12-12 21:46) [11]Использовал RDTSC мерил промежутки времени. Прерываний не заметил хотя скачки были, ну уж больно незначительные.
← →
Inovet © (2011-12-12 22:47) [12]> [11] Pavia © (12.12.11 21:46)
> Прерываний не заметил хотя скачки были
Запусти 10 таких измерялок одновременно.
← →
TUser © (2011-12-12 23:24) [13]Измерять надо будильником. Если между двумя алгоритмами не отличий, заметных при помощи будильника, - принципиальных отличий не вообще. Обычно так.
← →
Юрий Зотов © (2011-12-12 23:38) [14]Удалено модератором
← →
SQLEX © (2011-12-12 23:59) [15]Удалено модератором
← →
Германн © (2011-12-13 01:49) [16]Наилучшее решение в Windows - использовать QueryPerformanceCounter с учётом QueryPerformanceFrequency. По личному опыту.
← →
vrem (2011-12-13 10:05) [17]Удалено модератором
Примечание: Обсуждение модерирования
← →
OW © (2011-12-13 10:10) [18]толкался в штрафной :)
← →
han_malign (2011-12-13 10:34) [19]
> 3) Плюс ещё есть нюансы, как то виндоус многозадачная ОС.
- GetThreadTimes
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c