Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.09.2008, 00:10
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию уменьшение ЦП

Как можно уменьшить загрузку ЦП exe, что меньше кушала оперативной памяти
Ответить с цитированием
  #2  
Старый 16.09.2008, 05:21
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

Пиши на Windows API. Но это долго и муторно.
__________________
Программирование - это искусство и наш смысл жизни.
Ответить с цитированием
  #3  
Старый 16.09.2008, 07:54
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Восклицание

Может тебе нужно лишь поменять приоритет процесса, думаю этого тебе хватит?
Ответить с цитированием
  #4  
Старый 16.09.2008, 18:35
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

а как это в коде можно сделать?, а то просто аж 6 метров берет..(((
Ответить с цитированием
  #5  
Старый 23.09.2008, 13:43
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

ау, ну что никто не знает?
Ответить с цитированием
  #6  
Старый 23.09.2008, 14:40
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Загрузка ЦП и размер памяти, это разные вещи.

Как изменить приоритет, подробно описано здесь

Как оптимизировать приложения на Delphi, описано здесь

Почитай еще вот это

Последний раз редактировалось Rat, 23.09.2008 в 14:49. Причина: Забыл дописать
Ответить с цитированием
  #7  
Старый 23.09.2008, 16:50
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Почитай несколько книг по оптимизации программ.

1. Один из основных медодов минимизации исходного кода это, как сказал moo2k, использовать API и в памяти меньше места и файл меньше весит.
2. Если тебе критично занимаемое место на диске можно воспользоваться прогой ASPack, но я не думаю что сейчас это актуально.
3. По загрузки с ЦП я присоединюсь к M.A.D.M.A.N., но эта проца увеличивает обработку по времени. На небольших циклах это незаметно. При обработки больших и сверх больших циклов эта проца тоже может отнимать 90% - 99% ресурсов ЦП если обработка проскакивает быстро, хотя не дает программе подвиснуть и повесить ЦП.
Ну например
Код:
while true do begin
Application.ProccessMessage;
Edit1.Text:='1';
end;
Пример чисто теоритический. И иногда делаю небольшую задержку коммандой sleep(10);
Где то здесь я видел аналог этой проце. Хотя проца почти незаменима в циклах.

Хотя мнений может быть много и все они будут правильны по своему. тут надо подходить к каждой ситуации отдельно.
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
  #8  
Старый 23.09.2008, 16:53
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

И еще одно если твоя прога равботает с БД и данными, то данные с БД грузятся в твою прогу и она соответственно растет. т.ч. если она будет весить 20 или 22 метра после некоторых манипцляций это не существенно.
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
  #9  
Старый 23.09.2008, 16:58
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Любые данные которые читает прога из файли или из БД или из реестра так или иначе грузятся в память
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
  #10  
Старый 23.09.2008, 19:07
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

спасибо разобрался
Ответить с цитированием
  #11  
Старый 23.09.2008, 19:11
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

Цитата:
Сообщение от dmdx
Любые данные которые читает прога из файли или из БД или из реестра так или иначе грузятся в память

Если ваша программа редко использует какие либо функции или процедуры, то вынесите их в DLL файл, чтоб память не засоряли (хотя сейчас это и не так важно, памяти оперативной “куча” 1 - 2 гигабайта это уже не редкость, но всё же это подчеркнёт Ваш профессионализм).

ты случайно не знаешь как это можно сделать, если делал можешь подробно описать, зарание благодарен
Ответить с цитированием
  #12  
Старый 23.09.2008, 21:25
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Восклицание

Цитата:
Сообщение от жекаизжека
Если ваша программа редко использует какие либо функции или процедуры, то вынесите их в DLL файл, чтоб память не засоряли (хотя сейчас это и не так важно, памяти оперативной “куча” 1 - 2 гигабайта это уже не редкость, но всё же это подчеркнёт Ваш профессионализм).

ты случайно не знаешь как это можно сделать, если делал можешь подробно описать, зарание благодарен

Многие наоборот стремятся распространять свои программы одним файлом, а ты...
Зачем тебе этот гемор с библиотеками? Тем более если ты новичек. Может уж тогда все программы за тебя писать, не жирно будет? В инете куча готового материала, бери - нехочу (по написанию библиотек в частности) !
Ответить с цитированием
  #13  
Старый 24.09.2008, 13:01
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Цитата:
Сообщение от жекаизжека
Если ваша программа редко использует какие либо функции или процедуры, то вынесите их в DLL файл, чтоб память не засоряли (хотя сейчас это и не так важно, памяти оперативной ”куча” 1 - 2 гигабайта это уже не редкость, но всё же это подчеркнёт Ваш профессионализм).

ты случайно не знаешь как это можно сделать, если делал можешь подробно описать, зарание благодарен

1. именно так и делаю выножу в dll обработку которая требуется редко. и дело не в занимаемой памяти. Тут все проще чем меньше прога весит в оперативе тем быстрее и стабильнее она работает.
2. Что сделать? снизить затраты в ЦП и памяти?
3. для увеличение быстродействия не создавайте громоских процеду, а старайтесь делить на небольшие процы и функции.
Например чтение из реестра можно написать двумя способами. Но второй показал более оптимальные параметры и меньшее время (При многократнм обращении).
Способ 1:
Код:
const
  cKeyRoot: HKEY = HKEY_CURRENT_USER ;
  cKey: string = '\Software\MyProg';
Var
 Reg: TRegistry;
function GetStrReg(RootKey:HKey;Key:string):string;
begin
 Reg:=TRegistry.Create;
 Reg.RootKey:=RootKey;
 Reg.OpenKey(Key,False); 
 Result:=Reg.ReadString(Param); 
 Reg.CloseKey;
 Reg.Free; 
end;

Второй способ
Код:
const
  cKeyRoot: HKEY = HKEY_CURRENT_USER ;
  cKey: string = '\Software\ibc';
var
Reg: Tregistry
procedure CreateReg(RootKey: HKEY;Key:string);
begin
Reg:=TRegistry.Create;
Reg.RootKey:=RootKey;
Reg.OpenKey(Key,false);
end;

procedure FreeReg;
begin
 Reg.CloseKey;
 Reg.Free;
end;

function ReadIntReg(RootKey:HKEY; Key,Param: string): integer;
begin
 CreateReg(RootKey,Key,False);
 Result:=Reg.ReadInteger(Param);
 FreeReg;
end;
//----------------------------------------------------------
function ReadStrReg(RootKey:HKEY; Key,Param: string): String;
begin
 CreateReg(RootKey,Key,False);
 Result:=Reg.ReadString(Param);
 FreeReg;
end;

К тому же второй более гибкий
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.

Последний раз редактировалось dmdx, 24.09.2008 в 13:08.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025