Исправление медленного GridView - PullRequest
2 голосов
/ 16 декабря 2008

Я пытаюсь определить, почему представление сетки asp.net так ужасно медленно. Вид сетки содержится в пользовательском подклассе, который добавляет пользовательский пейджер и выполняет специальное форматирование. Кроме того, пользовательский вид сетки содержится в пользовательском элементе управления, который помещает вид сетки в панель обновлений и объединяет его с источником данных объекта, чтобы сделать элемент управления простым в использовании.

Я проследил замедление до двух проблемных областей:

  • Первый - это размер отображаемого html и viewstate. Мне удалось улучшить это путем рендеринга viewstate в переменную сеанса вместо скрытого поля, но я могу переписать элемент управления, чтобы вообще не использовать viewstate.
  • Но моя главная проблема - рендеринг элемента управления. На простой странице, где единственным элементом управления является мой пользовательский элемент управления, рендеринг сетки с 40 столбцами и 20 строками занимает несколько секунд даже при отключенном состоянии просмотра! Глядя на след, я обнаружил, что этап PreRender занимает 95% времени, поэтому я предполагаю, что проблема есть.

Итак, мой вопрос: как мне это исправить? У меня проблемы с отслеживанием того, что asp.net делает на этапе PreRender. У меня есть некоторый код в пользовательском элементе управления, который вызывается, но большую часть времени я проводил за пределами моего кода.
Я попытался загрузить символы отладки для asp.net, но Visual Studio все еще не позволяет мне войти в код, и трассировка не дает здесь слишком много информации.

Кто-нибудь еще был в этой ситуации? Сначала я подозревал, что мой источник данных, но вызов базы данных быстрый, поэтому проблема не в этом.

1 Ответ

6 голосов
/ 16 декабря 2008

Попробуйте профилировщик, такой как ANTS или dotTrace - у обоих есть бесплатные уловки, или у Team System есть такие, если у вас есть лицензия (Партнер?) Они покажут вам, где тратится время или, по крайней мере, помогут уточнить, где искать.

И послушайте Рико Мариани в недавнем подкасте Deep Fried Bytes - лучшие 40 минут, которые вы когда-либо потратили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...