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

Следующее решает его:

sudo gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys SOMEKEY

, Если Вы видите что-то вроде этого:

W: GPG error: http://archive.canonical.com jaunty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 

затем добавляют соответствующий ключ:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 

можно получить список repos здесь: http://repogen.simplylinux.ch (но не рекомендуется добавить обновления Xorg - по крайней мере, несомненно, создаст резервную копию Вас xorg.conf)

, Если видят, что ошибки от предыдущего repos - освобождают Ваш /etc/apt/sources.list.d dir

11
задан TrueWill 6 December 2009 в 22:15
поделиться

11 ответов

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

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

16
ответ дан 3 December 2019 в 01:24
поделиться

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

12
ответ дан 3 December 2019 в 01:24
поделиться

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

5
ответ дан 3 December 2019 в 01:24
поделиться

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

3
ответ дан 3 December 2019 в 01:24
поделиться

Используйте блоки try / catch только при необходимости. Они действительно замедляют ваше приложение.

РЕДАКТИРОВАТЬ для ясности: Под «необходимостью» я подразумеваю для выявления реальных ошибок.

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

Не используйте исключения для управления потоком программы. Я не знаю, кто это сказал первым, но я помню фразу « Исключения должны быть исключительными! ». Они должны быть для случаев, когда возникают непредвиденные проблемы, вещи, которые нельзя проверить до выполнения кода и их выброса.

Худший пример, который я часто вижу, это что-то вроде этого ...

int i = 0;
try
{
    i = int.Parse(txt);
} catch {Exception x) {
    // Do nothing, i = 0
}
-1
ответ дан 3 December 2019 в 01:24
поделиться

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

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

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

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

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

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

0
ответ дан 3 December 2019 в 01:24
поделиться

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

2
ответ дан 3 December 2019 в 01:24
поделиться

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

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

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

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

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

1
ответ дан 3 December 2019 в 01:24
поделиться

ДЕЙСТВИТЕЛЬНО используйте статические методы, но только если метод часто используется.

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

1
ответ дан 3 December 2019 в 01:24
поделиться

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

1
ответ дан 3 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: