1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
| Coconut |
7.01.2007 0:57
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Как на Pascal сделать процедуру выполняющую подсчет времени выполнения программы? Нужна для сравнения скорости выполнеия сортировок.
У меня есть на Delphi. Можно ли ее переделать? var OperBegin, OperEnd: TTimeStamp; Total: LongWord; begin OperBegin := DateTimeToTimeStamp(Now); {запоминается момент начала операции} {Здесь размещается код операции} OperEnd := DateTimeToTimeStamp(Now); {запоминается момент окончания операции} Total := OperEnd.Time - OperBegin.Time; end; |
| Bokul |
7.01.2007 1:07
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Вот, посмотри Как засекать время . Для Делфи тоже самое. Если надо точнее, то QueryPerformanceCounter и QueryPerformanceFrequency, о них можно почитать здесь
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
| Coconut |
7.01.2007 1:31
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Спасибо. Но у меня возникла небольшая проблема, при использовании uses windows; вылетает ошибка file windows.tpu не найден, если можете, скиньте, и путь где он должен лежать
|
| volvo |
7.01.2007 1:32
Сообщение
#4
|
|
Гость |
Какой компилятор у тебя?
|
| Coconut |
7.01.2007 1:35
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Константин Репутация: 0 |
BP 7.0
|
| Malice |
7.01.2007 1:54
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
| Bokul |
7.01.2007 1:55
Сообщение
#7
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Вместо
uses windows; попробуй написать uses winprocs; P.S. Ведь BP 7.0 работает с WinApi? Сообщение отредактировано: Bokul - 7.01.2007 2:00 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
| Coconut |
7.01.2007 2:26
Сообщение
#8
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Спасибо. Воспользовался Meml, вроде как заработало, потому что в массив ввел всего 50 элементов (на больше меня не хватило)
с winprocs - аналогично |
| Bokul |
7.01.2007 2:36
Сообщение
#9
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Можно также работать с досовской процедурой GetTime(Var Hour,Minute,Second,Sec100:word), но будет медленнее + мороки больше.
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
| volvo |
7.01.2007 13:24
Сообщение
#10
|
|
Гость |
Цитата(Bokul @ 7.01.2007 1:36) будет медленнее + мороки больше. Ну, прямо таки больше? Quicksort А насчет "медленнее" - можно узнать, что ты имел в виду? |
| Coconut |
7.01.2007 15:46
Сообщение
#11
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Спасибо, volvo. Запустил, один раз заработало - выывела результат на 20 элементах, потом и на 30 показывает 0, думаю мало элементов, как массиву типа pchar присвоить значения с помощью random?
|
| Coconut |
7.01.2007 16:50
Сообщение
#12
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Запустил отладку вручную, gettime работает. Следовательно, мало элементов.
|
| Bokul |
7.01.2007 19:23
Сообщение
#13
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата как массиву типа pchar присвоить значения с помощью random? Так генерируем случайную букву латинского алфавита:
Цитата Ну, прямо таки больше? Она не покажет правильный результат, если прогу тестировать в полночь.. Цитата А насчет "медленнее" - можно узнать, что ты имел в виду? Обратится один аз к памяти медленнее чем делать столько вычислений + опять таки обращаться к памяти? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
| Bokul |
7.01.2007 19:54
Сообщение
#14
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Еще добавлю - способ с досовским таймером будет влиять на увеличения засекаемого времени, ведь после самого взятия время мы тратим некоторые доли секунд на преобразование в LongInt, что дает погрешность.
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
| volvo |
7.01.2007 20:18
Сообщение
#15
|
|
Гость |
Цитата Еще добавлю - способ с досовским таймером будет влиять на увеличения засекаемого времени, ведь после самого взятия время мы тратим некоторые доли секунд на преобразование в LongInt, что дает погрешность. Правда? А ничего, что время на конвертацию в LongInt при первом вызове практически идентично времени на ту же конвертацию при втором вызове? Дальше продолжить, или догадаешься? Это первое...Второе - НЕТ совершенно безошибочного способа, даже QueryPerformanceCounter будет давать тебе результаты, которые можно будет признать некорректными, ибо Windows - вообще-то не RT OS... Выбирать надо способ, дающий достаточную точность... |
| Bokul |
7.01.2007 20:25
Сообщение
#16
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Выбирать надо способ, дающий достаточную точность... Так какой точнее? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
| Malice |
7.01.2007 21:44
Сообщение
#17
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
| Coconut |
15.01.2007 13:51
Сообщение
#18
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Константин Репутация: 0 |
Всем огромное спасибо и признательность за помощь. Использовал Gettime, при сортировке 10000 элементов получил время в 5 мс, задачу сдал.
|
![]() ![]() |
|
Текстовая версия | 8.12.2025 5:39 |