Другие языки программирования и технологии
как узнать скорость работы программы
Есть скажем две программы на паскале и на ассемблере, как узнать какая из них бымтрее и на сколько, более точно. Скажем Hello world
вычисление времени выполнения:
для интеля юзай
http://ru.wikipedia.org/wiki/VTune
реализация от amd
http://ru.wikipedia.org/wiki/CodeAnalyst
==
или же юзай asm втсавку
_asm
{
xor eax,eax
cpuid
rdtsc
mov [count],eax
//код, время выполнения которого меряем
xor eax,eax
cpuid
rdtsc
sub eax,[count]
// в eax - сколько намеряли
}
для интеля юзай
http://ru.wikipedia.org/wiki/VTune
реализация от amd
http://ru.wikipedia.org/wiki/CodeAnalyst
==
или же юзай asm втсавку
_asm
{
xor eax,eax
cpuid
rdtsc
mov [count],eax
//код, время выполнения которого меряем
xor eax,eax
cpuid
rdtsc
sub eax,[count]
// в eax - сколько намеряли
}
Смотря что там у тебя за паскаль и ассемблер.. . Если результирующие аппликухи 16-битные, они под виндозой запускаются на виртуальных машинах, и все, что ты можешь измерять, это время, которое виндоза соизволила этим виртуалкам выделить. Кстати, rdtsc в этом случае тоже не получится.
Если у тебя нормальные 32-64-битные виндозные аппликухи, опять же, встает вопрос приоритетов и текущей нагрузки.. .
В общем, на коротких программах неизбежно получится фигня, надо что-то трудоемкое делать.
Если у тебя нормальные 32-64-битные виндозные аппликухи, опять же, встает вопрос приоритетов и текущей нагрузки.. .
В общем, на коротких программах неизбежно получится фигня, надо что-то трудоемкое делать.
посмотри время до обработки и после обработки и отними
Можно секундомером, как вариант…
Правильнее было бы, после точки входа в программу вызвать функцию - GetTickCount() – она возвращает количество миллисекунд после старта системы, поместить её в начале проги, и вызвать в конце, после вычислить разность… получится время выполнение проги в миллисекундах…
Желательно пока будите тестить проги, не запускайте других процессов, просто погрешность будет сильнее… ну там типа распределение процессорного времени и прочая лабуда выделенным временем на процесс-поток…
Правильнее было бы, после точки входа в программу вызвать функцию - GetTickCount() – она возвращает количество миллисекунд после старта системы, поместить её в начале проги, и вызвать в конце, после вычислить разность… получится время выполнение проги в миллисекундах…
Желательно пока будите тестить проги, не запускайте других процессов, просто погрешность будет сильнее… ну там типа распределение процессорного времени и прочая лабуда выделенным временем на процесс-поток…
ну обычно типа хелловщрд толком не посчитаешь.. . это фактически интерфейс
меряют обычно скорость выполнения алгоритма (при разработке его с точностью до o())
а если в лоб, то можно просто выполнить N итераций алгоритма на одном наборе данных и засечь время, после это время поделить на N и получим с определенной долей вероятности фактичискую скорость выполнения алгоритма (но правда на кнкретной машине)
Для сравнения двух программ подойдет, но опять же, даже соотношения времен работы на разных конфигурациях могут быть немного отличны
меряют обычно скорость выполнения алгоритма (при разработке его с точностью до o())
а если в лоб, то можно просто выполнить N итераций алгоритма на одном наборе данных и засечь время, после это время поделить на N и получим с определенной долей вероятности фактичискую скорость выполнения алгоритма (но правда на кнкретной машине)
Для сравнения двух программ подойдет, но опять же, даже соотношения времен работы на разных конфигурациях могут быть немного отличны
Засеки секундомером ;)
Похожие вопросы
- Зависит ли скорость работы программы (скорость обработки данных) от языка программирования? или самой среды программирова
- В каких случаях важна скорость написания программы, а в каких случаях важна скорость работы самой программы?
- Обьясните принцип работы программы (Assembler)
- Время работы программы в Паскаль
- Скажите,если программы с диска С скопировать на диск D и удалить с С-работе программ не повредит?
- Вопрос о работе программы на языке СИ. Каким будет ответ?
- Скорость работы указателей и переменных? С++
- Люди напишите пожалуйста подробно ! как узнать исходный код программ и игр ? Заранее благодарен .
- как узнать в какой программе сделан файл с расширением DAT и расшифровать его
- Процедура Delphi, приостанавливаещая работу программы на заданное время.
Или в самой программе встроить цикл на 1000 итераций. Или для надёжности пару миллионов.