![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Kemix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
Здравствуйте, уважаемое сообщество.
При решение одной задачи возникла следующас проблема:время измерения алгоритма измеряется неверно. Сама задача:Сравнить 2 сортировки(Сортировка Пузырьком и Шелла) и снять показания времени выполнения и построить график зависимости времени выполнения каждого алгоритма от количества элементов в массиве. Сам код:http://pastebin.com/pjtKft4D Беда:время выполнения болтается в одном и том же диапазоне с увеличением количеством элементов. Заранее спасибо. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Код вычисления времени показывай.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| northener |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Он показал код по ссылке, но там ... Короче смотреть и вникать страшно. Например такой перл как:
О! Да там ещё и прямая работа с машинными кодами:
Не знал, что встроенный ассемблер в Дельфи такое допускает. Это сообщение отредактировал(а) northener - 22.4.2012, 00:41 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
RDTSC какой-то ещё. Это тоже, оказывается, какая-то ассемблерная инструкция, как Яндекс говорит.
Это сообщение отредактировал(а) Данкинг - 22.4.2012, 01:28 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Kemix, не у всех процов счетчики rdtsc разных ядер синхронны. Рекомендованная обёртка, использующая этот способ когда это возможно, называется QueryPerformanceCounter
была инструкция на х64, которую в мне не удавалось сформировать иначе как этим способом. Так что хорошо что оно есть Это сообщение отредактировал(а) bems - 22.4.2012, 11:20 -------------------- Обижено школьников: 8 |
|||
|
||||
| Kemix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
Увы, он выкатил отрицательое значение. - http://pastebin.com/iMkeV1i9 Есть ещё предложения? |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
а какой должно быть значение, если ты делаешь Start - Finish?
-------------------- Обижено школьников: 8 |
|||
|
||||
| Kemix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
Оу действительно. Ну вот и финальной код - http://pastebin.com/W0jeNaNp Единственная заноза - периодически возникают "скачки" при измерении. Походу измерение времени в Delphi - реально накипешая проблема. Тут наткнулся на это - http://habrahabr.ru/post/75234/ |
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Delphi здесь ни при чём.
|
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
В последних Delphi можно использовать TStopWatch.
|
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
| Kemix |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
||||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Заноза сравнительно легко извлекается путём вычисления "среднего" времени выполнения алгоритма при измерении нескольких вызовов вышеупомянутого. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Kemix |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 21.4.2012 Репутация: нет Всего: нет |
Т.е. для одного и того же N несколько раз замерять, а потом среднее арифиметическое вычислять? Чтож, подумаю. Пока препод в коммандировке выкладываю код. Чуть позже доработаю ещё с учётом данных советов.
UPD:Ничего не потребовалось редактировать, приняли так. Всем спасибо за помощь. Это сообщение отредактировал(а) Kemix - 12.5.2012, 19:18 |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |