Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2009, 21:34   #1
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
Вопрос Как уменьшить загруженность процессора?

например по типу сканера антивируса у него процент загрузки процессора не превышает 50 процентов, что нужно сделать чтобы было также. о разбитии на потоки и процессы - не думаю что это сильно поможет. для примера программа копирует все файлы из папки в другую папку, как снизить нагрузку на процессор?
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 31.01.2009, 21:35   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ставить паузы во время выполнения действий. Элементарный вариант Sleep(тут ваше значение).
BOBAH13 вне форума Ответить с цитированием
Старый 31.01.2009, 21:46   #3
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Ставить паузы во время выполнения действий. Элементарный вариант Sleep(тут ваше значение).
мне такой способ не нравится, программа все равно уходит в даун режим(((
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 31.01.2009, 21:50   #4
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
Восклицание

я вот модифицировал код (суть программы не важна, подходит, везде - где ведутся долгие расчеты) обработчик кнопки
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
i,y:integer;
begin
y:=0;
for I := 0 to 100000 do
begin
  y := i+y;
Application.ProcessMessages;  
  sleep(12);
Form2.Caption := inttostr(y);
end;
end;
только здесь возникает проблема закрытия окна при выполнении цикла - окно не закрывается пока не будет завершен цикл
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 31.01.2009, 21:59   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Странно... какой вопрос такой и ответ. Вы разве говориле что программа должна реагировать на сообщения ?

Тогда надо создавать отдельный поток, в нем выполнять действия и вызывать Sleep, тогда главный поток (интерфейс) будеь в порядке.

p.s. вот вы говорите, мне это не подходит, а потом в коде пишите Sleep(12)
BOBAH13 вне форума Ответить с цитированием
Старый 31.01.2009, 22:04   #6
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
По умолчанию

sleep я добавил позже, после подсказки.
а у потоков есть приоритеты?
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 31.01.2009, 22:05   #7
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

можно изменить приоритет процесса (потока), тогда проц будет отводить ему время, если у него есть возможность.
Д'якон вне форума Ответить с цитированием
Старый 31.01.2009, 22:05   #8
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

приоритеты есть и у потоков и у процессов
Д'якон вне форума Ответить с цитированием
Старый 31.01.2009, 22:07   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Д'якон Посмотреть сообщение
можно изменить приоритет процесса (потока), тогда проц будет отводить ему время, если у него есть возможность.
Мне кажется если поставить такой цикл

Код:
while True do;
То хоть какой там приоритет, нагрузка не уменьшится
BOBAH13 вне форума Ответить с цитированием
Старый 31.01.2009, 22:09   #10
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

ну это спорный вопрос, необходимо проверить на практике + на всяк случай можно использовать sleep(0) в данном цикле
Д'якон вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как уменьшить размер .ехе файла? D7 dx+ Общие вопросы Delphi 28 16.03.2012 20:38
Как уменьшить размер сис кода? Sergeu Общие вопросы Delphi 5 17.01.2009 21:40
Как уменьшить размер PNG изображения? highklass Мультимедиа в Delphi 5 31.05.2008 16:24
Как уменьшить мое первое окно BOPOHA Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 29.12.2007 17:57