Если вы знакомы с C#, то, скорее всего, знаете, что необходимо всегда переопределять Equals
, а также GetHashCode
, чтобы избежать снижения производительности. Но что будет, если этого не сделать? Сегодня сравним производительность при двух вариантах настройки и рассмотрим инструменты, помогающие избегать ошибок.
Рубрика «производительность» - 9
Переопределение Equals и GetHashCode. А оно надо?
2018-08-15 в 7:15, admin, рубрики: .net, .net core, C#, clr, dotnet, enum, Equals, GetHashCode, microsoft, struct, ValueType, Блог компании Microsoft, высокая производительность, Программирование, производительностьЧто не так с популярными статьями, рассказывающими что foo быстрее чем bar?
2018-08-09 в 12:23, admin, рубрики: performance optimization, php, кавычки, производительность, Разработка веб-сайтов, тестирование производительностиПримечание переводчика: я тоже думал, что время статей "Что быстрее — двойные или одинарные кавычки?" прошло еще 10 лет назад. Но вот подобная статья ("What performance tricks actually work") недавно собрала на Реддите относительно большой рейтинг и даже попала в PHP дайджест на Хабре. Соответственно, я решил перевести статью с критическим разбором этих и подобных им "тестов".
Есть множество статей (и даже целых сайтов), посвященных запуску разнообразных тестов, сравнивающих производительность различных синтаксических конструкций, и заявляющих на этом основании что одна быстрее другой.
Главная проблема
Такие тесты являются неверными по многим причинам, начиная с постановки вопроса и заканчивая ошибками реализации. Но что важнее всего — подобные тесты бессмысленны и в то же время вредны.
- Бессмысленны потому, что никакой практической ценности не несут. Ни один реальный проект еще никогда не был ускорен с использованием методов, приводимых в таких статьях. Просто потому, что не различия в синтаксисе имеют значение для производительности, а обработка данных.
- Вредны потому, что они приводят к появлению дичайших суеверий и — что еще хуже — побуждают ничего не подозревающих читателей писать плохой код, думая при этом что "оптимизируют" его.
Этого должно быть достаточно, чтобы закрыть вопрос. Но даже если принять правила игры и притвориться, будто данные "тесты" имеют хоть какой-то смысл, то выяснится, что их результаты сводятся лишь к демонстрации необразованности тестировщика и отсутствия у него всякого опыта.Читать полностью »
Цена JavaScript в 2018 году
2018-08-06 в 9:15, admin, рубрики: javascript, Блог компании RUVDS.com, Клиентская оптимизация, оптимизация, производительность, разработка, Разработка веб-сайтовПроцесс работы пользователей с интерактивными веб-сайтами может включать в себя шаг отправки им JavaScript-кода. Часто — слишком большого объёма такого кода. Если на сайте используется очень много JavaScript, это особенно сильно сказывается на мобильных пользователях. Например, вам случалось бывать на мобильных веб-страницах, которые, вроде бы, выглядят как уже готовые к работе, но не реагируют на щелчки по ссылкам или на попытки прокрутить страницу?
JavaScript-код, который попадает в мобильные браузеры, всё ещё остаётся самым дорогостоящим ресурсом, так как он, многими способами, может задержать переход страниц в состояние, в котором с ними можно взаимодействовать. Какую нагрузку на системы создаёт JavaScript в наши дни? Как анализировать сайты? Как ускорить загрузку и обработку браузерами интерактивных веб-страниц? Эдди Османи, перевод материала которого мы сегодня публикуем, решил найти ответы на эти и на многие другие вопросы, встающие перед теми, кто пользуется JavaScript для разработки веб-сайтов в 2018 году.
Читать полностью »
Как работает CPU Manager в Kubernetes
2018-08-01 в 6:12, admin, рубрики: benchmarks, cpu affinity, devops, kubernetes, Блог компании Флант, производительность, системное администрированиеПрим. перев.: Эта статья опубликована в официальном блоге Kubernetes и написана двумя сотрудниками Intel, принимающими непосредственное участие в разработке CPU Manager — новой возможности в Kubernetes, о появлении которой мы писали в обзоре релиза 1.8. В настоящий момент (т.е. для K8s 1.11) эта фича имеет статус бета-версии, а подробнее о её предназначении читайте далее в заметке.
Публикация рассказывает о CPU Manager — бета-фиче в Kubernetes. CPU Manager позволяет лучше распределять рабочие нагрузки в Kubelet, т.е. на агенте узла Kubernetes, с помощью назначения выделенных CPU на контейнеры конкретного пода.
Обеспечение быстрой работы сайта как часть конвейера разработки
2018-06-29 в 9:41, admin, рубрики: Alconost, alconost translations, Web Performance, web performance optimization, Блог компании Alconost, высокая производительность, Клиентская оптимизация, производительность, производительность сайта, производительность сайтов, Разработка веб-сайтовПроизводительность веб-сайтов — не только о том, как заставить страницы сайта грузиться быстрее. Необходимо также донести важность эффективной работы веб-ресурсов до разработчиков и других участников проекта. Производительность — такая же часть функциональности, как и всё остальное, поэтому ее реализацию нельзя откладывать на «когда-нибудь».
Тема производительности интересует меня уже давно. Помню, всё началось со знакомства с «жадными» алгоритмами и алгоритмами типа «разделяй и властвуй». Было что-то особенно приятное в том, чтобы взять код, на выполнение которого требовалось несколько минут, переделать его и заставить выполнять задачу за пару секунд.
Если говорить о сетях, то проблемы производительности здесь иные: обычно дело не в вычислительной сложности, а в том, чтобы выполнить нужные действия в нужный момент наилучшим образом. На первый взгляд эта задача может показаться элементарной, но на самом деле она намного сложнее.
Переведено в Alconost
Читать полностью »
Особенности вызова функций в С++
2018-06-18 в 10:46, admin, рубрики: abi, c++, clang, optional, system v, xeon, виртуальные функции, вызов функции, инициализация, массивы, ненормальное программирование, оптимизация, Программирование, производительность, хвостовая рекурсияНе так давно у меня произошёл очередной разговор с коллегой на извечную тему: "по ссылке, или по значению". В результате возникла данная статья. В ней я хочу изложить результаты моего исследования по этой и смежным темам. Далее будут рассмотрены:
- Регистры и их назначение при вызове функций.
- Передача и возврат простых типов и структур.
- Как передача по ссылке и по значению влияют на оптимизации тела функции компилятором.
- Как используется место при многочисленных вызовах функций.
- Механизм виртуальных вызовов.
- Оптимизация хвостовых вызовов и рекурсии.
- Инициализация структур, массивов и векторов.
Осторожно! Статья содержит большое количество кода на C++ и ассемблере (с комментариями), а также множество таблиц с оценками производительности.
О личной продуктивности. Как вести деятельность, когда от тебя зависит многое
2018-06-16 в 17:20, admin, рубрики: мозг, продуктивность, производительность, тайм-менеджмент, управление персоналом, управление проектами
Как-то раз британцы из «Expert Market» решили провести исследование на тему производительности труда. Если кратко подвести его результаты, то можно сказать, что на исходе у ребят получилась статистика с почасовыми показателями в разных странах (формула не совсем отражает реальную картину, но все же хоть какое-то основание есть: ВВП поделили на количество производственных часов). Обидно, что мы уже даже не удивляемся нижеследующим выводам, потому что привыкли к низкой продуктивности:
- Россия — на 32-м месте из 36 (если бы участвовали все страны, то боюсь, все было бы еще плачевнее).
Среднестатистический сотрудник в нашей стране «полезен» всего лишь на £9,71, что в 4,7 раз слабее показателей Люксембурга, который меньше по площади в 6 611 раз. Зато ВВП там почти в 3,9 раз выше.
Производительность хранилища данных: новые цифры
2018-06-09 в 10:29, admin, рубрики: Erasure Coding, VZ Storage, Блог компании Virtuozzo, виртуализация, высокая производительность, программно-определяемое хранилище, производительность, резервное копирование, хранение данныхВ предыдущем нашем посте мы поделились своими измерениями производительности гипервизора после установки патчей против уязвимостей Meltdown и Spectre. Сегодня же пришло время поговорить о производительности хранилища данных.
Читать полностью »
Неполнотекстовый поиск: специфичные возможности Elasticsearch для сложных задач
2018-06-03 в 12:05, admin, рубрики: api, elasticsearch, php, postgresql, rest, ненормальное программирование, поисковые технологии, Проектирование и рефакторинг, производительность, разработка
Привет всем, меня зовут Андрей, и я разработчик. Давным-давно — кажется, в прошлую пятницу — у нашей команды был проект, где понадобился поиск по ингредиентам, входящим в состав продуктов. Допустим, в состав колбасы. В самом начале проекта от поиска требовалось не много: показать все рецепты, в которых нужный ингредиент содержится в определенном количестве; повторить для N ингредиентов.
Читать полностью »
Мониторинг производительности дисковой подсистемы при помощи zabbix и block stat
2018-05-28 в 17:49, admin, рубрики: iostat, zabbix, Анализ и проектирование систем, блочные устройства, высокая производительность, дисковые подсистемы, производительность, Разработка под Linux, системное администрирование, тестирование, Тестирование IT-системВряд ли кто-то будет спорить, что наблюдение за производительностью дисковой подсистемы — чуть ли не важнейшая задача для всех высоконагруженных систем хранения и баз данных. Я изначально столкнулся с этим давным-давно, еще когда приходилось наблюдать за PostgreSQL. В последнее время вернулся к этому вопросу в связи с необходимостью тестирования различных хранилищ.
Сегодня хочу поделиться с сообществом своим текущим опытом на реальном примере zabbix и его связке с block stat.