Эта статья является частью серии статей по повышению производительности в .
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++
-
Реликтовое Излучение
19 Oct, 24 -
Пунто Свитчер 2.95
19 Oct, 24 -
Обзор Игры Prey Для Linux
19 Oct, 24 -
Киберсказка: Красные Сапоги
19 Oct, 24 -
Начало Всех Начинаний – Цели
19 Oct, 24