Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
19 Июль 2025, 14:30:34
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Очень медленное закрытие приложений БД написанных в Delphi 2010

Страниц  :   Вниз
  Печать  
Автор Тема: Очень медленное закрытие приложений БД написанных в Delphi 2010  (Прочитано 2370 раз)
0 Пользователей и 1 Гость смотрят эту тему.
HWA
Гость
« : 20 Сентябрь 2010, 16:04:31 »

Были портированы ряд приложений для работы с БД InterBase (Firebird 1.5) с Delphi 2007 -> Delphi 2010. Использовались компоненты IBX и бесплатная библиотека RxLib (порт на Delphi 2010). Результат: приложения запускаются работают с той же скоростью, что скомпилированные под Delphi 2007, но вот выход из них... раз в 50 медленне (в режиме Debug'a более 3-х минут, при запуске скомпилированного файла вне среды разработки 1,5 - 2 минуты). От производительности техники (~ Pentium 4, более 2000 MГц, 2 Гб ОЗУ) и ОС (WinXP, Windows 7) сей процесс (закрытие приложения) не зависит - одинаково медленно везде и на всем. В проектах довольно много (но не чрезмерно) различных форм, с различными компонентами для отображения наборов данных (в основном гриды). Формы создаются и уничтожаются динамически. Для выборки данных используются (везде) компонент TQuery (или динамически созданный экземпляр класса TQuery). Пишущая и читающая транзакции (Read Commited). Для всех открытых запросов по возможности (где не забыл) в нужное время (OnClose или OnDestroy) выполняется метод Close(). Более того пробовал использовать библиотеки JEDI вместо RxLib. Все тщетно! Может кто знает в чем дело? Или чего посоветовать, чтобы еще такого предпринять для устранения проблемы...         
Записан
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #1 : 20 Сентябрь 2010, 17:38:41 »

в дельфи никакого профайлера нет? посмотреть на каких функциях тратиться больше всего времени и дальше уже думать
Записан
HWA
Гость
« Ответ #2 : 20 Сентябрь 2010, 21:59:24 »

На счет профайлера надо разобраться (никогда не пользовался, и представляю в самых общих чертах,но займусь в самое ближайшее время может чем поможет). А вот на каких функциях? Ну скажем Close(), но именно на закрытие всего приложения, да и вообще при любом методе выхода - Application.Terminate(), кнопка "Закрыть" главной формы, Alt + F4, ModalResalt := mrOk, отправка сообщения wmQuit окну главной формы. Быстро выйти можно только в режиме Debug посредством "Reset program", а если запускали exe'шник, то через диспетчер задач.  
Записан
Бред Питт
Почетный гродненец
*****

Репутация: +450/-5
Offline Offline

Пол: Мужской
Сообщений: 1773


Просмотр профиля
« Ответ #3 : 20 Сентябрь 2010, 23:29:02 »

Я конечно не эксперт ни разу, высказываю чисто интуитивное предположение. Может Вы намудрили чего с закрытием запросов?
Просто вот этот факт:
От производительности техники (~ Pentium 4, более 2000 MГц, 2 Гб ОЗУ) и ОС (WinXP, Windows 7) сей процесс (закрытие приложения) не зависит - одинаково медленно везде и на всем.
наталкивает на мысль, что может быть где-то какой-то таймаут истекает - и тогда приложение закрывается... Я не знаю наверняка - просто это подозрительно.
Записан

Театр закрывается. Нас всех тошнит.
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #4 : 21 Сентябрь 2010, 03:04:28 »

профайлер имхо должен помочь, найдется какой нить кривой деструктор
у меня нет ни малейшего понятия как эти компоненты реализованы, но может быть где то что то с чем то пытается синхронизироватсья, это не выходит и убивается по таймауту, как сказал tristan
возможным симптомом может быть низкая загрузка процессора. что показывает диспетчер задач в эти  2 минуты?
Записан
HWA
Гость
« Ответ #5 : 21 Сентябрь 2010, 09:55:29 »

возможным симптомом может быть низкая загрузка процессора. что показывает диспетчер задач в эти  2 минуты?
Благодарю за хорошую мысль про диспетчер задач, "виноват" во всем антивирь (NOD32 - загрузка процессора 90-100 %). После его отключения все завершается быстро. Другие антивирри работать моим программам не мешают. Видимо при закрытии запускаются "подозрительные" с т.з. NOD'а процессы. Осталось выяснить, что именно. Чем сейчас и занимаюсь, хотя это не существенно, ибо в организации везде установлен Касперский (лицензионный Улыбка), который лично мне не нравится (тормозит работу RAD Studio (иногда сразу 2-х) + множество других приложений (~10) - пытаюсь работать многозадачно, понимаете ли Улыбка).
--->
В принципе задача почти решена. Если кому-то интересно, то все дело в новом RTTI реализованном в Delphi 2010. Полностью отключить его соответствующими директивами компилятора пока не удается. На других ресурсах "мудрые" люди советуют пересобирать сорцы VCL с этими директивами. Интересно, как они это себе представляют? А последствия? И как к этому отнесется компания owner продукта?
Кстати профайлера в данной версии Delphi нет - он появился только в следующей (говорят уже где-то есть). Но перехода следующую версию осуществлять я пока не собираюсь, а так можно вообще перестать работать - только заниматься апгрэйдами проектов Улыбка.
« Последнее редактирование: 29 Сентябрь 2010, 09:46:25 от HWA » Записан
HWA
Гость
« Ответ #6 : 04 Октябрь 2010, 12:15:34 »

Замечательный совет!
Ваши слова да моему начальству в уши...
На клиентских машинах установлен Касперский (лицензионный), на сервере тоже явно не NOD. Это я (разработчик) работаю на такой ЧУД-Ной железяке (512 М ОЗУ), поэтому приходится извращаться. Не подключать же мне все время свой ноут к рабочей сети!
А с VCL, я и не собирался ничего делать, за это мне не платят  Улыбка, просто отключаю NOD когда требуется и все.
Записан
JUNGLE
Гродненец
**

Репутация: +24/-5
Offline Offline

Предупреждения: у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 187


Просмотр профиля
« Ответ #7 : 14 Декабрь 2010, 09:00:38 »

Сижу на Delphi 6.0 с 2001-ого без всякого изврата, типа rxlib или jedi и никогда никаких тормозов закрытия IB баз не встречал.
Записан
qwertyuiokm123
Новенький


Репутация: +0/-0
Offline Offline

Сообщений: 6

Просмотр профиля Email
« Ответ #8 : 05 Август 2011, 19:22:34 »

Разрабатываем базы данных для сайтов
раскручиваем сайт. лечение ЖКТ
Записан
JUNGLE
Гродненец
**

Репутация: +24/-5
Offline Offline

Предупреждения: у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 187


Просмотр профиля
« Ответ #9 : 05 Август 2011, 19:24:32 »

Разрабатываем базы данных для сайтов раскручиваем сайт. лечение ЖКТ
Пашол вон!!! Спамер!  Злой
Записан
SVSH
Гигафлэймер
*****

Репутация: +3240/-9
Offline Offline

Пол: Мужской
Сообщений: 26625


(OO\ (|||)°(|||) /OO)

Просмотр профиля
« Ответ #10 : 02 Январь 2012, 01:10:43 »

Сижу на Delphi 6.0 с 2001-ого без всякого изврата, типа rxlib или jedi и никогда никаких тормозов закрытия IB баз не встречал.
С того времени в дельфе появилось много полезных улучшений
Записан
Старый Волк
Гость
« Ответ #11 : 01 Март 2012, 16:21:03 »

Да конечно появилось  Улыбка. Лично меня больше не тянет в те среды разработки, после Delphi 2010. D 2007 работать можно - но есть глюки в самой RAD Studio - как-то глюки контекстного меню, иногда просто по не понятным причинам навсегда "задумывается", да и с типами String, WideString, AnsiString, Char, WideChar, AnsiChar, PChar, PWideChar, PAnsiChar - порядка нет.
Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,12 секунд. Запросов: 20.