Форум: "Основная";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
Внизпрога в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c