Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1323757703
OW
2011-12-13 10:28
2012.04.15
Вопрос по EurekaLog. В процедуру перехвата заходит 2раза, почему?


15-1323763792
Dennis I. Komarov
2011-12-13 12:09
2012.04.15
WinXP без GUI...


2-1324515704
kalamandra
2011-12-22 05:01
2012.04.15
Decode gzip


15-1323808202
Юрий
2011-12-14 00:30
2012.04.15
С днем рождения ! 14 декабря 2011 среда


9-1191431019
Pa5ha
2007-10-03 21:03
2012.04.15
Глюк в анимации смд





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский