Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2010, 22:01   #1
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
Восклицание Оптимизация программы!!!

Всем доброго времени суток! Обращаюсь ко всем со следующей проблемой и надеюсь кто-нить подскажет что делать! Суть следующая - мне нужно по максимуму оптимизировать программу! В оперативе она весит целых 45 метров! Очень часто бывает такое что если прога повисит 1-2 часа в оперативе и в ней ничего не делать то она начинаете медленно работать, подвисает, а бывает может и зависнуть!!! Не подскажите что мне предпринять!! Ну хоть какие то соображения на этот счёт выскажите а то я не знаю как и подступиться к данной проблеме!
Заранее очень благодарен!!!!
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 07.08.2010, 22:06   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Хоть бы программу-то описали... Вообще, если говорить абстрактно, то наверняка же все данные вашей программы не нужны целиком во время её выполнения, подгружайте по мере необходимости и ВЫГРУЖАЙТЕ ненужные на данный момент данные.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 07.08.2010, 23:19   #3
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Сори! Постараюсь описать! И так: Авторизация в програме происходит через сервер моего сайта! Сама программа включает в себя где то около 15 форм! Обясню почему: программа берет из сервера данные 4 категорий в ексельовских файлов, и инфу из них перебирает и помещает в базу данных созданую в аксесе! Все эти 4 категории данных отображаться в отдельных окнах! во всех окнах есть своё меню и панель инструментов! так же в каждой категории тобиш в каждом окне есть возможность от фильтровать данные, радактировать, добавлять, удалять, обновлять, печатать. Все эти действия естественно так же в отдельных окнах!
Вот так в кратце!

Я понимаю и сам думал отом что вы написали! А можно поподробнее пожалуйста как это сделать? Может примерчик какой то?
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 07.08.2010, 23:26   #4
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Даже не знаю какой тут пример привести. Например, после загрузки ваших экселевских файлов и помещения в эксесс, память, выделенная под них, освобождается, или они по-прежнему существуют? А вообще, сколько весят ваши файлы? Может, такой размер нормален...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 07.08.2010, 23:47   #5
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Относительно ексельовских файлов:

Код:
Ap := CreateOleObject('Excel.Application');
Ap.Workbooks.Open('C:\Program Files\Lider\update\arenda.xls',0,True);

.............

DeleteFile('C:\Program Files\Lider\update\arenda.xls');

......

Ap.DisplayAlerts := False;
Ap.Visible := True;
Ap.Application.Quit;
Как видете здесь всё как помне нормально!

А о пример я думал может как заставить программу не грузить в оперативу все 15 форм с её елементами одновременно а тока когда она будет в программе вызываться?

Прога установленная весит 14.4 МБ. Exe-файл 3.83, База - 9.7, + ещё чучуть там служебные фалы!
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 07.08.2010, 23:54   #6
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Ну, сколько она на диске весит никакого значения не имеет. Вот вы привели код, но там вы удаляете файл, а не объект, его загрузивший, ведь так? А на формах много графики или только редакторские объекты?
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 08.08.2010, 00:04   #7
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Удаления обекта? Я думал строчка
Код:
Ap.Application.Quit;
это и делает! или она просто закрывает эксель наверное?!
графики? да нет! есть список картинок! гдето около 10! для значков на кнопках использую! ещё компонент xpmainfest, из нестандартных компонентов использую fast report, DEVExpres(cxGrid). Картинка ввиде логотипа на главной форме! ну на формах и стандартных компонентов то не мало!
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 08.08.2010, 00:07   #8
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

$T@LKER, вы бы приводили участки кода, которые надо оптимизировать. Без них размещение темы в разделе "Общие вопросы Delphi " бессмысленно
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 08.08.2010, 00:09   #9
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Есть идея: попробуйте всякие важные объекты по очереди удалить/закомментировать, тогда сможете увидеть, что именно ест память. На этапе загрузки форм можете диспетчером задач посмотреть сколько занимают объекты в design-time. Просто так мы просто тычем пальцем в небо, нужно что-то поконкретнее...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 08.08.2010, 09:30   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Да, без экстрасенсорики здесь трудно разобраться. Судя по кусочку кода в посте 5 у Вас проблемы с загрузкой и освобождением используемой памяти. Вы создали объект Ap, отработали с ним - а где освобождение памяти? Ap.Free к примеру. Если Вы еще раз вызываете приведенный код - происходит катастрофическое переполнение памяти, отсюда и тормоза и зависание. А размер самой программы и ресурсов к ней не играет большого значения. У меня программа ~ 35 МГб ( управляет графическими файлами около 30 МГб два десятка штук) и успешно работает даже на слабых машинах . Просто все организовано по принципу - вызвал ресурс, обработал, вывел на форму и освободил память для следующей обработки. Если что-то надо сохранить, то сбросил в файл на диск и т.п.
В любом случае нужна конкретика. Опишите хотя бы структуру программы, упрощенную блок-схему.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация Flangini Microsoft Office Excel 5 11.06.2009 11:48
Оптимизация кода программы insi Фриланс 2 17.05.2008 18:30
Оптимизация Terran Общие вопросы Delphi 3 03.05.2008 19:03