Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-9307
CyberSnake
2001-11-30 00:52
2002.03.04
NTFS и свободное место


3-9062
Rustik
2002-02-06 16:32
2002.03.04
Проблема с заполнением DBCombobox из модуля данных


14-9277
tovSuhov
2002-01-16 13:03
2002.03.04
Только что получил вирус по почте...


3-9063
NickBat
2002-02-06 17:42
2002.03.04
Inerbase


1-9214
skywalker
2002-02-14 19:05
2002.03.04
Данные динамического массива





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский