![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Kiber_rat |
|
|||
![]() MACMANIAC ![]() ![]() Профиль Группа: Участник Сообщений: 276 Регистрация: 18.4.2002 Где: Ashdod, Israel Репутация: нет Всего: 9 |
Вопрос в том как сделать апликашку минимально прожорливой в отношении памяти и что на это влияет. К примеру, влияет ли на объём занимаемой памяти полупрозрачность и если да, то как можно с этим бороться. Интересуют так-же директивы компилятора, позволяющие сэкономить память.
-------------------- Best regards! @..@_____Ku6ep =*=______\______KPbIC
|
|||
|
||||
| Diamond Cat |
|
|||
|
Unregistered |
Для начала надо забить на VCL и пользовать API, это сразу скажется на объеме пожираемой память т.к. увы VCL не совершенна, следующим шагом можно назвать переход на asm, это еще круче повлияет на размер проги (как на харде так и в памяти), стараться использовать библиотеки уже загруженные виндами , тем самым не тратя место на описание собственных функций и процедур.
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Если не спускаться на уровень API то все равно можно уменьшить расход памяти
1. Создавать объекты и формы по мере необходимости, уничтожать их после использования (хотя иногда здесь должен быть разумный компромис, пользователя может задалбывать пока открывается форма с сотней контролов, тут можно наплевать на память и создать сразу все объекты чтобы сэкономить на времени - это всегда решается индивидуально, например часто используемые формы создаются сразу, а остальные только когда в них возникнет потребность) 2. Из директив компиллятора - отключить выравнивание по границе слова (опять-таки экономишь на памяти теряешь в производительности), выключить все опции отладки (надо только в финальной стадии разработки, потому что отлаживать с выключенными опциями запаришься) 3. Внимательно подходить к использованию массивов, например тип Word и Integer отличаются только 2мя байтами - пустяк, но если есть массив из них то потери могут быть существенные. 4. Если приложение состоит из многих DLL и EXE файлов то имеет смысл компиллировать с раздельными пакетами - при этом у тебя к каждой программе не будет прикомпиллирована вся VCL, и классы VCL будут находится только в одном экземпляре. Если вся программа состоит только из одного файла то делать это не целесообразно. 5. Обычно в процессе разработки пробуешь то один компонент то другой, то один класс то другой, таким образом в USES секциях накапливается какое-то количество модулей, которые реально не используются, но кое-какой код из них компиллируется. На завершающей стадии проэкта я обычно комментирую всю секцию USES, ставлю новый оператор USES и компиллирую по одному добавляя недостающие модули, таким образом избавляюсь от "баласта". Точно так же следует посмотреть на свой код и избавится от неиспользуемых функций, особенно если есть классы собственного приготовления от неиспользуемых Pablic и Protected методов, которые компиллятор всегда будет включать в код. 6. И последнее - сколь нибудь серьезные программы с самого начала разрабатываются на клиент-серверной технологии, используются технологии работы приложения сразу на многих компьютерах одновременно - multi-tier. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |