![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| apd2004 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Хотелось бы узнать какие операторы цикла лучше выбрать для достижения максимальной скорости в Турбо Паскале 7.0 ???
Что лучше while/repeat/for ??? И ещё,какие операторы больше всего ''съедают" время???? Заранее спасибо! |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
||||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
При "прочих равных" - это как? Ничего, что на цикле Repeat/Until безо всяких "прочих равных" (скопированное тело цикла, абсолютно одни и те же вычисления, 2 раздельных запуска программы с интервалом в полчаса для тестирования разных циклов) по сравнению с For-ом имеем больше 10% выигрыша по времени (TP7.0 + WinXP)? Преимущество While - чуть меньше, но все же оно есть, он немного быстрее For-а.
Это сообщение отредактировал(а) volvo877 - 20.4.2009, 23:41 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
может еще раз потестим ?! код Вашего теста не сохранился ?! |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
На циклах экономить? Ну это вообще извращение! Может тогда вообще писать ничего не будем? Оставим пустой проект? - Ну как же? Вообще мгновенно выполнятся будет.
|
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Угу, давайте все темы будем сводить к Мусорке, Флейму и Песочнице, да? Ибо комодератору этих разделов у себя скучно, и он решил залезть в тематику...
Нет, давно это было, года 3 назад, может и 4, но попробую что-нибудь сваять... |
|||
|
||||
| megabist |
|
|||
![]() Mart Slaaf ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 3.4.2006 Где: Мск Репутация: нет Всего: 31 |
SneG0K, mes, На циклах вполне имеет смысл экономить при огромном количестве, маленьких операций.
Тестов не проводил, но вроде от препода слышал, что самый быстрый for. -------------------- Don't panic! Жди, и Фатум тебя приведёт... |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
volvo877, а логически рассудить комодеру другого раздела религия не позволяет?
Сами подумайте, каждый цикл предназначен для определенных целей. while будет работать пока соблюдается условие for будет работать пока соблюдается условие, но со счетчиком for медленней while. Но если мы начнем с while делать цикл со счетчиком то потеряем продуктивность и вернемся к for, но через while! так разве есть смысл экономить на циклах? Все уже сэкономлено до нас! Лучше лишние проверки и ненужные вызовы вынести за цикл. Тогда будет выгода, а так это коту под хвост. |
|||
|
||||
| RinOSpro |
|
||||||||||||
|
Unregistered |
IMHO тут следует выбирать из удобства, и какой цикл подходит к данной ситуации.
Вот что показывает отладчик:
Так что много не съэкономите, но если постараться Это сообщение отредактировал(а) RinOSpro - 21.4.2009, 15:34 |
||||||||||||
|
|||||||||||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
Под оптимизацией_цикла подразумевается оптимизация его алгоритма, а не оптимизация путем замены ключевого слова.
вроде или точно ?! кстати,
хочу уточнить, что 1. время изменения счетчика ничтожно мало, и заметно только на фоне пустого цикла. Сокращение одного умножения (в цикле) принесет в десятки раз больше прибыли. 2. Речь идет о старых компиляторах, современные оптимизируют очень хорошо, в том числе полностью исключая пустые циклы и не использованные счетчики. Это сообщение отредактировал(а) mes - 21.4.2009, 17:34 |
||||||
|
|||||||
| SneG0K |
|
||||||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
А кто говорит про умножение?
Идентичен
И смысл? Мы ничего не оптимизировали, но создается впечатление "жирафа"... И разве есть выгода в таком? p.s. сорь, если где синтаксис неправильно объявил, давно уже с паскалем и дельфи не работаю |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
жираф это когда говорят что замена цикла for на while (как в вашем посту) принесет оптимизацию и добавит а слон это когда два цикла при прочих равных (т.е while со счетчиком и for) выполняются одинаково. и соответственно осуществлять выбор между этими двумя (и еще repeat) надо в рамках логики и удобства, а не писать все через while из за мнимой выгоды. Это сообщение отредактировал(а) mes - 21.4.2009, 20:34 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
mes, полностью согласен
|
|||
|
||||
| Rodman |
|
|||
|
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: нет Всего: 122 |
ну простом пробеге по циклу пустому не увидеть..
а вот мы экспериментировали с вычислениями, так что фор все быстрее |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: нет Всего: 250 |
кому верить то ?! а может лучше логическому мышлению и здравому смыслу ?.. Если что взгляните на результаты в машиных кодах представленные выше. Это сообщение отредактировал(а) mes - 21.4.2009, 21:10 |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |