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
|
 |
« Ответ #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'шник, то через диспетчер задач.
|
|
|
Записан
|
|
|
|
Бред Питт
|
 |
« Ответ #3 : 20 Сентябрь 2010, 23:29:02 » |
|
Я конечно не эксперт ни разу, высказываю чисто интуитивное предположение. Может Вы намудрили чего с закрытием запросов? Просто вот этот факт: От производительности техники (~ Pentium 4, более 2000 MГц, 2 Гб ОЗУ) и ОС (WinXP, Windows 7) сей процесс (закрытие приложения) не зависит - одинаково медленно везде и на всем. наталкивает на мысль, что может быть где-то какой-то таймаут истекает - и тогда приложение закрывается... Я не знаю наверняка - просто это подозрительно.
|
|
|
Записан
|
Театр закрывается. Нас всех тошнит.
|
|
|
iddqd
|
 |
« Ответ #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 Предупреждения:
Пол: 
Сообщений: 187
|
 |
« Ответ #7 : 14 Декабрь 2010, 09:00:38 » |
|
Сижу на Delphi 6.0 с 2001-ого без всякого изврата, типа rxlib или jedi и никогда никаких тормозов закрытия IB баз не встречал.
|
|
|
Записан
|
|
|
|
|
JUNGLE
Гродненец
 Репутация: +24/-5
Offline Предупреждения:
Пол: 
Сообщений: 187
|
Разрабатываем базы данных для сайтов раскручиваем сайт. лечение ЖКТ Пашол вон!!! Спамер! 
|
|
|
Записан
|
|
|
|
SVSH
|
Сижу на Delphi 6.0 с 2001-ого без всякого изврата, типа rxlib или jedi и никогда никаких тормозов закрытия IB баз не встречал.
С того времени в дельфе появилось много полезных улучшений
|
|
|
Записан
|
|
|
|
Старый Волк
Гость
|
Да конечно появилось  . Лично меня больше не тянет в те среды разработки, после Delphi 2010. D 2007 работать можно - но есть глюки в самой RAD Studio - как-то глюки контекстного меню, иногда просто по не понятным причинам навсегда "задумывается", да и с типами String, WideString, AnsiString, Char, WideChar, AnsiChar, PChar, PWideChar, PAnsiChar - порядка нет.
|
|
|
Записан
|
|
|
|
|