Повышение Производительности: Полезные Советы И Рекомендации По .Net

Эта статья является частью серии статей по повышению производительности в .

NET. Первую статью можно найти Здесь .

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

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

Хаки предельно просты и не влияют на конечный функционал.

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

Исправлю ошибку предыдущей статьи, отвечу сразу и более подробно.

На мой взгляд, наши хаки имеет смысл использовать в следующих случаях:

  • Вы пишете новый код и решаете сделать его немного лучше и экономичнее.

  • Вы достигли стадии, когда начались оптимизации и рефакторинги, поэтому вы просматриваете и меняете участки кода, которые выполняются очень часто.

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

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

Это не те хаки, которые выкинут женщину из корзины вашего приложения и заставят сервер работать в десять раз быстрее.

В лучшем случае вам удастся выжать процентов десять.

Но в мире все в порядке – рубашки не осталось.



1. Сравнение строк

Многие наверняка знают, что это такое StringComparison.Ordinal .

Эта опция предназначена для сравнения строк без использования культур.

Сравнение с его помощью работает гораздо быстрее, чем с использованием обрезков, поскольку для сравнения используются коды символов без дополнительной обработки.

Мы уже давно используем это сравнение везде, где это возможно.

Вполне ожидаемо, что в этот момент вы скажете: «Ну и что тут такого? Мы делаем то же самое!» Но это еще не все.

Давайте установим небольшое расширение для Visual Studio: Визуализатор параллелизма .

С его помощью можно увидеть работу потоков и моменты их синхронизации.

Давайте напишем небольшой тест, который будет сравнивать строки с использованием культуры:

   

const Int32 length = 10000; var tasks = new Task[length]; var strings = Enumerable.Range(0, length).

Select(i => Guid.NewGuid().

ToString()).

ToArray(); for (var i = 0; i < length; ++i) {

Теги: #бокс #оптимизации #экономия на матчах #Высокая производительность #.

NET #C++

Вместе с данным постом часто просматривают: