Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Application.ProcessMessages, сильно ли эта штука тормозит цикл? 
:(
    Опции темы
sgentstuff
Дата 15.7.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



сильно ли эта штука тормозит цикл?
Код

Application.ProcessMessages;
 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
DemoCode
Дата 15.7.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 2
Всего: 41



Цитата(sgentstuff @  15.7.2006,  14:22 Найти цитируемый пост)
сильно ли эта штука тормозит цикл?

Зависит от многих обстоятельств. А опытным путем нельзя проверить? 


--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
Palladin
Дата 15.7.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Да, это происходит потому что даже если ты используеш только одну подкоманду
допустим Application.ProcessMessages;
Помимо неё подгружается ВЕСЬ TApplication, а он состоит из сотен строк кодаsmile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
sgentstuff
Дата 15.7.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



ну помимо того что просто как команда тормозит, еще добавляется тормознутость (т.е я делаю люболе действие прерывается цикл совершается действие и потом он дальше продолжается, сильно ли это тормозит?), опытным не знаю как проверить 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
BUGOR
Дата 15.7.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



Цитата

опытным не знаю как проверить


Замерить время выполнения с этой командой и без неё, отнять от первого второе. 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 15.7.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



sgentstuff, эта команда заставляет обработать все поступившие сообщения и если код обработчика быдет выполнятся секунду, то вся программа в это время будет ждать т.е. все зависит от длительности выполнения кода обработчика. Если это время велико, то обычно создают второй поток и помещают то что должно выполнятся постоянно в него, а обработчики будут выполнятся паралельно с ним. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Voyager
Дата 15.7.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 2
Всего: 18



Если в цикле обарабтывается достаточно много элементов, то да, заметно тормозит. 
PM   Вверх
SoWa
Дата 15.7.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



Чтобы измерить время делай gettickcount до и после работы. Потом вычитай.
Код

var i,j: cardinal {если не ошибаюсь}
begin
i:=gettickcount;
{Тут всякий код}
j=gettickcount;

result=abs(j-i);
end;
 


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
sgentstuff
Дата 16.7.2006, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



В общем затестил я это дело, если во время работы программы ничего не делать то время работы одинаково, если же че-то делать с формочкой(например перетаскивать), то время работы заметно увеличивается, короче все понятно, всем спасибо!

Добавлено @ 07:47 
Цитата(SoWa @ 15.7.2006,  21:12)
Чтобы измерить время делай gettickcount до и после работы. Потом вычитай.
Код

var i,j: cardinal {если не ошибаюсь}
begin
i:=gettickcount;
{Тут всякий код}
j=gettickcount;

result=abs(j-i);
end;

i:=gettickcount; - это просто число, как его в нормальное время преобразовать?

Добавлено @ 07:51 
Цитата(alexeis1 @ 15.7.2006,  15:40)
sgentstuff, эта команда заставляет обработать все поступившие сообщения и если код обработчика быдет выполнятся секунду, то вся программа в это время будет ждать т.е. все зависит от длительности выполнения кода обработчика. Если это время велико, то обычно создают второй поток и помещают то что должно выполнятся постоянно в него, а обработчики будут выполнятся паралельно с ним.

код обработчика будет выполнятся секунду - отчего зависит время выполнения кода обработчика, т.е если я например нажал на формочку и таскаю ее по экрану, вся программа ждет пока я ее отпущу? 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Palladin
Дата 16.7.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Цитата(sgentstuff @  16.7.2006,  07:41 Найти цитируемый пост)

код обработчика будет выполнятся секунду - отчего зависит время выполнения кода обработчика, т.е если я например нажал на формочку и таскаю ее по экрану, вся программа ждет пока я ее отпущу? 



Да, хочеш живой пример в Windows smile  вообщем начни чтонить качать по сети себе на камп, после того как начнётся скачка(качать только нужно стандартно, без каких-либо программ) возьми окно которое показывает сколько скачалось и потаскай его по рабочему столу, скачка на время перетаскивания замирает smile 

P.S. Покрайней мере у меня на кампе так smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
BUGOR
Дата 16.7.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



RooR, скачка идёт параллельно, просто инфа не отображается.

Цитата

i:=gettickcount; - это просто число, как его в нормальное время преобразовать?


Это не просто число, это кол-во миллисекунд с момента последней перезагрузки. Как перевести? Простым делением сначала на 1000(получишь кол-во секунд), потом на 60(минуты) и ещё раз на 60(часы), ну можно ещё на 24, тогда сутки, а потом ещё на 365, это уже года, ну и ещё на 100, векаsmile 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Palladin
Дата 16.7.2006, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Цитата(BUGOR @  16.7.2006,  12:44 Найти цитируемый пост)
RooR, скачка идёт параллельно, просто инфа не отображается.


Хмм возможно smile ну дак влюбом случаее виден замороз, что пока перетаскиваеш идёт ожиданиеsmile в данном случае анимашки скачки smile 

P.S. 2Bugor то что ты сказал это точно?????
 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
BUGOR
Дата 16.7.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



RooR, ну проверь, это же не сложно сделать. Поперетаскивай окошко секунд десять, потом отпусти и на прогрессбаре будет скачок, это говорит о том, что во время перетаскивание скачивание файла продолжалось.  

Это сообщение отредактировал(а) BUGOR - 16.7.2006, 13:03


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Palladin
Дата 16.7.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



2Bugor Гениально smile  smile  smile  за мегамозг получай по репе "+" smile 

P.S. Я так и проверил ещё до того как ты отписал свой последний пост smile 
 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Mr.Floppy
Дата 16.7.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 3.7.2006
Где: Москва

Репутация: 1
Всего: 1



Цитата
сильно ли эта штука тормозит цикл?

Сильно. Поэтому, если ты делаешь какие-то долгие вычисление в цикле, и рисуешь прогрессбар или изменяешь текст кепшена, то делай это не чаще 1 раза в секунду. (кстати, TGauge сам перерисовывается и ему не надо ProcessMessages выполнять) 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.