Каковы некоторые Производительность [Dos / Don'ts] в C # -ASP.NET - PullRequest
11 голосов
/ 01 сентября 2009

Я заканчиваю один из своих проектов и просматриваю весь проект в поисках ошибок, ошибок и ошибок производительности Я использую MVC. Я поймал один Не, и это:

Никогда не помещайте RenderPartial в цикл. это резко замедлит весь ваш сервер.

Ответы [ 11 ]

15 голосов
/ 01 сентября 2009

Никогда сохранить WebControl для Session.

Поскольку он имеет ссылку на объект Page, он в конечном итоге сохраняет каждый элемент управления для сеанса.

12 голосов
/ 01 сентября 2009

Не оптимизируйте преждевременно. :) Если сайт не работает, профилируйте код, чтобы определить, где провести время.

5 голосов
/ 01 сентября 2009

Вы запускали свою программу через FxCop? У него есть набор правил для исполнения.

3 голосов
/ 01 сентября 2009

Не профилируйте и не оценивайте производительность в конфигурации отладки. Конфигурация отладки не предназначена для быстрой работы, и вы можете сделать неверные выводы о производительности (например, идея о том, что частичные представления / пользовательские элементы управления являются медленными; это верно в конфигурации отладки, но не в конфигурации выпуска). Когда вы профилируете для измерения производительности, вы должны использовать конфигурацию релиза, чтобы вы могли увидеть, где реальные проблемы.

2 голосов
/ 07 декабря 2009

НЕ возиться с явной сборкой мусора.

1 голос
/ 07 декабря 2009

НЕ используйте статические методы - но только если метод часто используется.

НЕ помечайте переменную как статическую, если вы действительно не хотите, чтобы значение переменной было одинаковым во всех экземплярах (другой разработчик сделал это, и я с удовольствием отлаживал, почему у нас странное поведение, только когда несколько пользователей попал на сайт). Это не из соображений производительности, а просто полезный совет.

1 голос
1 голос
/ 07 декабря 2009

Кэширование поможет вам улучшить производительность, но вы должны быть осторожны, используйте его только там, где это имеет смысл

1 голос
/ 07 декабря 2009

Большинство проблем с производительностью связано с доступом к диску или вызовами через сети.

Так что будьте осторожны, как и как часто вы обращаетесь к файловой системе или базе данных. Вам нужно сделать так много звонков по сети, или вы могли бы сделать это за один звонок.

Один хороший пример:

  • значение сохраняется в сеансе
  • сеанс настроен на использование сервера SQL
  • значение используется только один раз каждые десять запросов
  • для каждого запроса значение будет считано из базы данных, а затем записано в базу данных

В этом случае лучшим решением может будет написать собственный код для хранения и чтения значения.

0 голосов
/ 07 сентября 2009

В C # объекты всегда создаются с новым. Одно это может быть недостатком в определенной перспективе. Например, если вы создаете объект внутри цикла (это означает, что для каждой итерации в цикле создается новый объект), вы можете замедлить работу вашей программы.

for (int i = 0; i < 1000; ++i)
{
   Object o = new Object();
   //...
}

Вместо этого создайте экземпляр вне цикла. Объект o = новый объект ();

Object o = new Object();
for (int i = 0; i < 1000; ++i)
{
   //...
}

Создать объект в цикле, только если вам действительно нужно ...

Возможно, небольшая часть C ++ поможет вам понять механику и понять, когда и где оптимизировать ваш код. Хотя C ++ - это другой язык, есть много вещей, которые можно применить к другим языкам, когда вы поймете основы управления памятью (new, delete, указатели, динамические массивы / статические массивы и т. Д.).

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