![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Walera |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Суть вопроса токова какие есть способы и приемы для уменьшения размера программы в оперативной памяти.
|
|||
|
||||
Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Только VB-шные способы из книжки:
- компилируй в p-код. В "Свойствах", меню "Проект". - уменьшай число загруженных форм, а те, которые больше не нужны, сразу выгружай (unload, а не hide) - уменьшение числа элементов управления, использование массивов элменетов управления - использование label вместо TextBox (или не использование TextBox вместо Label) - храни данные (картинки, например) в файлах, а не в exeшнике. - организация модулей (модуль подгружается в память только по требованию, а так лежит себе на диске) - не юзай тип variant без нужды - юзай динамические массивы, а не статические - вовремя уничтожай объекты и строки (s$="") - юзай условную компиляцию (чтоб избавиться от своих процедур, которые нужны только во время отладки) - картинки и графические методы занимают много памяти - для простого отображения юзай Image, а не PictureBox - если картинка не нужна, выкидывай ее (типа set form1.picture=nothing) - для отображения на формах лучше юзать метод PaintPicture, а не Image или PaintBox Ну и наконец последнее, не вэбэшное: юзай компрессоры типа UPX или ASP (хотя я на вэбэшных прогах это не пробовал). Это сообщение отредактировал(а) Тутанхамец - 14.5.2006, 08:39 |
|||
|
||||
Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
А вопрос был в уменьшении размера исполняемого файла либо в уменьшении объема занимаемой оперативной памяти?
-------------------- Я желаю всем Счастья! |
|||
|
||||
HAS |
|
|||
Ing ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 1.3.2005 Где: Internet Репутация: нет Всего: 2 |
Naghual, оперативной памяти.
![]() |
|||
|
||||
Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
А! Ну да!
Туплю я чего-то... ![]() -------------------- Я желаю всем Счастья! |
|||
|
||||
Walera |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Как уменьшить размер вот этого кода
|
|||
|
||||
Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Уменьшить размер кода???
Установи мелкий шрифт!!! Код нельзя уменьшить! Иногда возможно его оптимизировать с конкретной целью. Иногда после этого исходного кода становится меньше. Но это не может быть задачей. Это мое личное мнение. Это сообщение отредактировал(а) Naghual - 16.5.2006, 09:06 -------------------- Я желаю всем Счастья! |
|||
|
||||
IcyJet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
И товарищи, разумно используйте масивы элементов управления!
![]()
Согласен, к этому особо стремится ненадо, но раздувать его тоже нестоет. А вобще если смущает большой код(хотя этот я неназову большим), тогда можно делать модули. В один к примеру объявления API'шки и процедур-оболочкек, в другом еще что-то и т. д. |
|||
|
||||
Walera |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Эта программы занимает в оперативной памяти 3,2 Мб у меня всего оперативной памяти 96 Мб и установлен WinXP Поэтому свободной памяти почти не остается. А вопрос состоит в том можно ли объем занимаемый программой оперативной памяти уменьшить до 1 - 1,,5 Мб |
|||
|
||||
Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Из этой трехмеговой программы ты показал нам одну функцию, которая на три мега явно не тянет. И хочешь какого-то ответа?
Уж не говоря о том, что подсказка - это подсказка, а работу за тебя делать никто не будет (по крайней мере бесплатно). Ну и бесплатный совет ![]() Добавлено @ 08:31 А вообще мне стало интересно... Ответил сейчас и для пробы запустил свою простенькую программку, которая практически не использует ни массивы, ни графику, ни много элементов управления... считает только по формуле. В общем, должна быть легкая. Экзешник 44 кб. Посмотрел в Диспетчере Задач - ее процесс занимает 6 мегов. Виртуальная машина VB и прочие dll? Раньше не задумывался, так как не ставил ХР на слабых машинах. Запустил прогу, сделанную в Делфи на WinAPI (41 kb). Процесс весит 2 мега. Вот думаю сейчас - почему так: - библиотеки объем дают? - или винда выделяет больше места, чем надо? Для стека целый мегабайт вроде по умолчанию... Уважаемые, кто может просветить? |
|||
|
||||
Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Walera, извини. Был не прав. Видимо, тянет ![]() Добавлено @ 09:05 Сейчас посмотрел модули, загруженные для самой простенькой VBшной проги: Проект1.exe ntdll.dll kernel32.dll MSVBVM60.DLL USER32.dll GDI32.dll ADVAPI32.dll RPCRT4.dll ole32.dll msvcrt.dll OLEAUT32.dll uxtheme.dll MSCTF.dll SXS.DLL SSSensor.dll Насколько понимаю - они размер и дают. Я прав, народ? Или модули dll должны быть одни для всех процессов и на размер каждого не влияют? |
|||
|
||||
IcyJet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Ну есть модули dll общие почти для всех програм (а-ля USER32.dll, GDI32.dll, kernel32.dll и т.д.), и почти для каждого высоко уравневого языка (для нашего любимого к примеру MSVBVM60.DLL), ты прав они и дают рАзмер...
ActiviX DLL сама по себе не запускается (ты знаеш ![]() |
|||
|
||||
Akina |
|
||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Walera
А на зачем ты объявляешь массив на 256 элементов (строка 48)
если потом используешь только TRasCon(0)? Объяви переменную, а не массив. Добавлено @ 16:46
Именно... если это первое использование DLL - она будет загружена и соответственно отъест памяти, но в любом случае размер DLL не входит в размер памяти, который потребляется самой программой. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
Walera |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
да во время отладки эта функция вешает систему напрочь, но готовый ЕХЕ проект на работу системы ни как не оказывает влияние. ( покрайней мере на таймауте в 10 секунд) при использовании DoEvents индикатор использования ресурсов процессора просто зашкаливает, а так как программа доджна сидить от включения компьютера до его выключения второй способ меня не устраивает Данная функция не моя родная. из всего кода чисто моё это только функция Мain, а за совет СПАСИБО, анлогично всем участникам. |
|||
|
||||
Тутанхамец |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
А что входит? Если смотреть размер процесса в Диспетчере Задач? Akina, я вот вчера попробовал порыться насчет модулей процесса. Нарыл примерно то же самое в книжке Стивена Романа "Программ-е в Win32 API на VB":
Но тогда вопрос - а как узнать, сколько физической памяти занимает мой Проект1.exe? В списке модулей, если получать его через EnumProcessModules, присутствуют и "автономные" и "общие". GetModuleInfo, насколько я понимаю, дает размер image'а в обоих случаях. Есть какой-то апишный способ, чтобы различить автономные и общие? Или нужно пересчитывать все модули во всех процессах, ища те, которые по одному разу? И если как-нибудь разобраться, сколько занимают модули, то есть ведь еще и стек и, может, еще какая-нибудь фигня, относящаяся к процессу? С этим как быть? Картинку виртуального адресного пространства я нашел в упомянутой книжке, но интересует физически. Это сообщение отредактировал(а) Тутанхамец - 18.5.2006, 07:39 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |