Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.04;
Скачать: CL | DM;

Вниз

прога в ram   Найти похожие ветки 

 
sammy   (2002-02-12 08:31) [0]

каким образом можно уменьшить размер памяти, который
прога занимает в ram?


 
drpass ©   (2002-02-12 10:47) [1]

Под винду этот вопрос не катит - любая прога занимает 4 ГБ виртуальной памяти :)


 
Praco ©   (2002-02-12 11:11) [2]

KOL , использование плагинов - все это есть на данном сайте


 
Fellomena   (2002-02-12 11:11) [3]

Как мне кажется, имеется ввиду не виртуальное адрессное пространство, а реальное кол-во памяти занимаемое приложением.
Для уменьшения занимаемой памяти при программировании программы старайся как можно меньше использовать глобальных переменных.
Старайся из каждой переменной выжымать всё возможное, используя её для разных целей.
Если, к примеру, значение некоего параметра изменяется от 0 до 200 не объявляй его как integer, объяви как byte...
Ну и всё в таком духе - поищи в Net-е : советов много


 
Anatoly Podgoretsky (M) ©   (2002-02-13 00:50) [4]

Не совсеми советами можно согласиться, вот эти вызывают сильное сопротивление.

1. Старайся из каждой переменной выжымать всё возможное, используя её для разных целей.

Огромное поле для получения ошибок.

2. Если, к примеру, значение некоего параметра изменяется от 0 до 200 не объявляй его как integer, объяви как byte...

Кроме проигрыша ничего не дает, экономичя в три байта, повернется большей потерей на преобразовании в целое, плюя резкая потеря быстродействия на современных процессорах, они опримизированны для работы с 32 битными. Выигрыш можно получить только на очень больших массива и то только по размеру.

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


 
Dimk   (2002-02-13 01:06) [5]

Я продолжу:
i. Формы и другие объекты создавай при необходимости.
i+1. Используй конструкцию try ... finally и в finally
уничтожай объекты которые создал в try.
i+2. Кстати, хоть это и не очевидно, иногда если постоянно чтото откудато мучительно извлекается - можно просто это чтото один раз сохранить в какой нибудь переменной или структуре. Тут конечно надо знать меру. Получится экономия на коде. Если чтото постоянно вычисляется и при этом известны всегда все значения которые будут вычислены - можно свести их в массив. Это тоже экономит код (опять же надо знать меру...).

Пока на ум больше ничего не пришло :o) В виндах экономия памяти не очень актуальна.


 
Fellomena   (2002-02-13 10:56) [6]

2 Anatoly Podgoretsky:
не согласна с:

>1. Старайся из каждой переменной выжымать всё возможное, используя её для разных целей.
>> Огромное поле для получения ошибок.

Смотря как использовать. Если в процедуре, к примеру, по очереди отрабатывают несколько циклов FOR, то
не надо вводить i, j, k для каждого из них, лучше пользоваться одной переменной, обнуляя её после каждого использования.
Примеров можно много придумать, но ошибки, конечно, возможны...

> 2. Если, к примеру, значение некоего параметра изменяется от 0 до 200 не объявляй его как integer, объяви как
byte...
>> Кроме проигрыша ничего не дает, экономичя в три байта, повернется большей потерей на преобразовании в
>> целое, плюя резкая потеря быстродействия

Вопрос был не о быстродействии, а о компактности ;) При написанни многопоточных приложений, работающих с большими потоками данных (к примеру, БД-серверы) выигрыш в размере, я думаю будет, хотя стоит ли игра свеч в таком случае ? (скорость же падает 8/


2 Dimk: объясни, как конструкция try ... finally уменьшает кол-во памяти, потребляемой программой. Как мне всегда казалось Try ... Finally предназначена для предотвращения ошибок связанных с открытием/закрытием некого ресурса:

открытие ресурса;
try
работа с ресурсом;
finally
закрытие ресурса;
end;

Не вижу экономии ;)


 
Виктор Щербаков ©   (2002-02-13 11:11) [7]

Можно посоветовать использовать ключевое слово packed в объявлениях структурированных типов а также битовые поля или множеста вместо массивов логических переменных.

Однако это палка о дву концах, т.к. время доступа к таким объектам увеличивается, а также увеличивается размер кода для этого самого доступа.


 
Nemesis ©   (2002-02-13 11:52) [8]

>2 Dimk: объясни, как конструкция try ... finally уменьшает кол-во памяти, потребляемой программой. Как мне всегда казалось Try ... Finally предназначена для предотвращения ошибок связанных с открытием/закрытием некого ресурса:

открытие ресурса;
try
работа с ресурсом;
finally
закрытие ресурса;
end;

Не вижу экономии ;)
Может я объясню: такой ресурс будет обязательноу ничтожен с памяти


 
Anatoly Podgoretsky ©   (2002-02-13 22:31) [9]

Fellomena (13.02.02 10:56)
2 Anatoly Podgoretsky: не согласна с:

Смотря как использовать. Если в процедуре, к примеру, по очереди отрабатывают несколько циклов FOR, то
не надо вводить i, j, k для каждого из них, лучше пользоваться одной переменной, обнуляя её после каждого использования.

Это использование для одной цели, и обнулять не требуется, мое возражения против использования в разных целях.

Вопрос был не о быстродействии, а о компактности ;) При написанни многопоточных приложений, работающих с большими потоками данных (к примеру, БД-серверы) выигрыш в размере, я думаю будет, хотя стоит ли игра свеч в таком случае ? (скорость же падает 8/

Так и я пишу, не будет выигрыша в компактности при замене переменной с интеджер на байт, будет проигрыш в компактности. Другое дело массивы, тут иногда имеет смысл, если огромные, если важнее будет размер, а не скорость.



 
Dimk   (2002-02-14 00:50) [10]

to Nemesis
Лучше я бы и сам не сказал :o)


 
sammy   (2002-02-15 08:30) [11]

спасибо всем!!!



Страницы: 1 вся ветка

Текущий архив: 2002.03.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-9227
solo
2002-02-15 14:38
2002.03.04
число пикселей на 10 мм в режиме отображения mm_Lometric


3-9049
sd
2002-02-06 07:47
2002.03.04
Возврат значений из скрипта.


14-9269
mvg_first
2002-01-10 20:32
2002.03.04
Есть ли альтернатива АДО при доступе к MS SQL 2000


1-9125
Геральт
2002-02-15 22:14
2002.03.04
Вывод различной информации


1-9151
Tsatur Soft
2002-02-16 23:35
2002.03.04
Срочно!