![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Достался мне по наследству движок, который приходится разбирать на предмет производительности.
Первым делом включил трасировку и выяснил, что уходит 7 секунд на обработку PreRender события модуля, унаследованного от System.Web.UI.UserControl. При этом PreRender не перегружен. Шаблон для генерации страницы берётся из базы данных. Я недавно начал изучать ASP .NET, поэтому возможно не додаю какие-то данные вам, спросите - помогите ![]() Добавлено @ 05:22 Сейчас попробовал перопределить OnPreRender и поставил бряк в пустое тело функции - выполнение не остановилось. При первом входе на страницу отрабатывает раз в 5 дольше. Это сообщение отредактировал(а) Rickert - 24.10.2008, 05:23 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Этого следовало ожидать ![]() При первом входе после билда? Нормальная практика. Во-первых, происходит динамическая компиляция, во-вторых считываются данные (некоторые из которых затем, как правило, заносятся в кэш, что позволяет сократить время загрузки при следующем посещении). Дело в том, что этот UserControl доступен на странице как protected поле, поэтому ничто не мешает подписаться на событие контрола, например, из самой страницы (или даже из других контролов: ((MyPage)anotherControl.Page).ThatUserControl.PreRender += lablabla). В этом случае трассировка - не лучший выход: стоит воспользоваться профайлером (например, ANTS Profiler), который в подробностях распишет кто, когда и главное где подписывается на это событие. |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Idsa, ссылкой угостишь?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Триал версию можно скачать с сайта фирмы Red-Gate: http://www.red-gate.com/Products/ants_profiler/index.htm
|
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Вопрос к Idsa.
Есть 2 страницы, на одной странице допустим есть функция, ничего не принимающая и ничего не возвращающая. Могу я эту функцию вызвать из другой страницы ? -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Сделаем вид, что этот вопрос относится к данному топику ;) Конечно, можно. Страница - это обычный класс, поэтому, если уровень доступа позволяет, ничто не мешает вызвать этот метод. Однако, думаю, этот метод стоит вынести в бизнес-логику (ну или хотя бы просто в отдельный класс). Если же нет желания заниматься рефакторингом, можно сделать этот метод статическим, дабы не пришлось каждый раз создавать экземпляр страницы только для вызова метода. |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Благодаря ANTS увидел что задница в другой функции, которая корнями своими кривыми уходит в оракловую dll'ку для клиента.
Oracledataaccess.dll Что-то не так с БД настройками. Почему на чтение из БД уходит 15 секунд, при этом сервере, где стоит БД почти не загружен и вообще особо не шевелится, при выполнении запросов - значит не в железе маза ![]() Тогда в чём? Много думаю... -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Было бы интересно заглянуть в этот долгоиграющий метод, посмотреть, что же так тормозит систему (может, программист, работавший над проектом до этого, перед увольнением в гневе поставил там Thread.Sleep(10000); всякое бывает).
Еще интересно, каким образом этот метод оказался связанным с PreRender контрола при том, что у самого контрола это событие не обрабатывается. |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Idsa, программист не увольнялся, сидит в соседнем офисе. А обращение к БД идёт через BLToolKit - там всё чисто. +все функции самого движка просмотрел - чисто.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Это был не самый вероятный вариант, скорее, ирония ![]()
А что же такое считывается целых 15 секунд? И все-таки, какова связь между этим методом и событием PreRender контрола? Трассировака же не могла соврать... |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Idsa, она и не врала. В OnPreRender вызывался метод, в котором идёт обращение к БД.
Вообще странно всё. Тут видимо в сервере дело, ибо сейчас время отлика увеличилось троекратно и постоянно. Нашёл много "задержек" в самом коде. Уж слишком навороченный движок у человек вышел. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
||||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Idsa, Да, как потом оказалось на этой странице модплючено несколько модулей, которые наследуют от Контрола, и один из них был перегружен, а второй, который я смотрел - нет.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |