Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

прога в ram [D5, Win95/98]


sammy ©   (2002-02-12 08:31:00) 

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


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

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


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

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


Anatoly Podgoretsky   (2002-02-13 22:31:00) [3]

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

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

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

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

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


Nemesis   (2002-02-13 11:52:00) [4]

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

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

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


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

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

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


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

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

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

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

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

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


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

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

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


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

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

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


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

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

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

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

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

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

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


Praco   (2002-02-12 11:11:00) [9]

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


Fellomena   (2002-02-12 11:11:00) [10]

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


drpass   (2002-02-12 10:47:00) [11]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо