Как стать автором
Обновить
44.48

Высокая производительность *

Методы получения высокой производительности систем

Сначала показывать
Порог рейтинга
Уровень сложности

Разбираемся в «базовых» алгоритмах для проекта

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 6.1K
Блог компании Сбер Высокая производительность *Python *Java *Алгоритмы *
Туториал

Меня зовут Александр Певненко, я Java developer в СберТехе. Вместе с командой развиваю Platform V DataSpace — BaaS-продукт, обеспечивающий базовые сервисы для работы с данными.

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

Если скорость и производительность критичны для системы, то оптимизация кода перестает быть пустой тратой времени. А использование сторонних библиотек без понимания их устройства становится риском, так как может обернуться падением производительности.

Поэтому здесь я приведу несколько «базовых» алгоритмов, знание которых помогает мне работать с прицелом на эффективность кода, и дополню примерами на Python и Java.

Читать далее
Всего голосов 28: ↑15 и ↓13 +2
Комментарии 14

Новости

Гигачад в мире мини-ПК: 96 ГБ ОЗУ и Intel Core i9-13900H в форм-факторе NUС

Время на прочтение 4 мин
Количество просмотров 9.2K
Блог компании Selectel Высокая производительность *Гаджеты Компьютерное железо Настольные компьютеры
image

Мини-ПК — весьма популярный форм-фактор десктопных компьютеров, который практически сразу после своего появления привлек внимание как обычных, так и корпоративных пользователей. Сейчас компания Intel, к сожалению, уже не выпускает эти устройства, передав бразды «правления» ASUS.

Но это не конец для NUC, поскольку производят подобные системы и другие компании. На днях появилась информация о скором выходе в продажу необычно мощного для своего класса устройства. Бренд SimplyNUC выпускает систему с процессором Intel Core 13 поколения и поддержкой вплоть до 96 ГБ ОЗУ. Не основной, а именно что оперативной памяти. Подробности о новинке — под катом.
Читать дальше →
Всего голосов 41: ↑33 и ↓8 +25
Комментарии 36

Почему ONNX так популярен в ML: конвертации, утилиты и инференс

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 1.6K
Высокая производительность *Open source *IT-инфраструктура *Машинное обучение *Искусственный интеллект
Обзор

Большинство инженеров, работающих с машинным обучением, уже знакомы с форматом данных ONNX. Его часто используют для хранения обученных моделей и конвертации их мeжду фреймворками.

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Анализ эффективности кэширования на бэкенде ЛК МегаФон

Уровень сложности Сложный
Время на прочтение 8 мин
Количество просмотров 1.4K
Блог компании МегаФон Высокая производительность *Анализ и проектирование систем *Серверная оптимизация *Распределённые системы *
Туториал

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

Одним из таких узких мест может стать ваше распределенное хранилище для кэша. Все мы привыкли к тому, что оно нас спасает от тяжелых запросов в БД или обращенийк внешним системам с большой задержкой. Но рано или поздно может возникнуть ситуация, когда конфигурация этого хранилища будет на грани своей оптимальной производительности и в случае высоких нагрузок (аварий, спровоцированных наплывом пользователей или рекламными кампаниями) хранилище может подвести нас.

Как определить, что утилизация ресурсов кэширования происходит оптимально? Что если довольно большая часть нагрузки не приносит реальной пользы, и от нее с легкостью можно избавиться, тем самым разгрузив хранилище? В рамках этой статьи мы оценим эффективность кэширования бэкeнда ЛК МегаФон и расскажем о результатах проведенных мероприятий для оптимизации.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

Истории

Семантики доставки событий в распределенных системах

Время на прочтение 9 мин
Количество просмотров 1.3K
Блог компании AvitoTech Высокая производительность *Семантика *Программирование *

Павел Агалецкий, ведущий разработчик в юните Platform as a Service в Авито, рассказал про семантики или гарантии доставки сообщений, и почему с ними не всегда просто разобраться.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 7

Лучший regexp для Go. Benchmark c другими ЯП. Сравнение библиотек

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2.1K
Высокая производительность *Open source *Программирование *Регулярные выражения *Go *
Обзор

"Не используйте регулярки - иначе вместо 1 проблемы, у вас их станет 2!" - как то так говорят знатоки... А что остается делать непослушным, желающим эффективный поиск по большому количеству шаблонов?

Да, для такой довольно специфичной проблемы существуют крутые решения вроде Ragel или re2c. Тем не менее, для своего проекта мне показалось нецелесообразным пока осваивать эти прекрасные технологии.

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

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 8

Разрабатываем свой браузер. Часть вторая: CSS

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 2.9K
Высокая производительность *Open source *CSS *C *Браузеры


Всем привет!


Продолжаем цикл статей по разработке браузерного движка.


Да, лучше поздно, чем никогда. Да, перерыв был большой.


В конце статьи я опишу, как поживает проект lexbor, что с ним происходит.


В этой статье я постараюсь раскрыть особенности парсинга Cascading Style Sheets (CSS). Расскажу, как вывернуть «ежа» наизнанку и как тестировать полученный результат.


В CSS спецификациях всё разжевано, ну, или почти всё, тут я расскажу, как всё устроено, куда смотреть и с чего начать.


Эта статья больше обзорная, здесь не будет мелких подробностей реализации, скорее, общие сведения и основные алгоритмы. За мельчайшими подробностями прошу в код на GitHub.


И конечно, как это обычно бывает, мы замахнёмся на звание самого быстрого парсера CSS.

И так, начнём!
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 1

Опыт горизонтального масштабирования: как мы перешли с Ignite на Platform V DataGrid в антифроде

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 1.6K
Блог компании Сбер Высокая производительность *Администрирование баз данных *
Кейс

Привет, Хабр! Меня зовут Михаил Сапрыкин, я ведущий инженер разработки в Сбере. Наша команда развивает систему антифрода. Раньше мы работали с Apache Ignite, но затем перешли на Platform V DataGrid — распределённую базу данных в оперативной памяти для высокопроизводительных вычислений, которую разрабатывает СберТех.

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

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 2

Как в 1.5 раза повысить производительность фронтенда высоконагруженного интернет-магазина на Next.js

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 5.1K
Высокая производительность *Разработка веб-сайтов *JavaScript *ReactJS *
Туториал

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

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 18

Улучшаем BARSiC: как мы проверяли и совершенствовали алгоритм консенсуса в кластере

Время на прочтение 6 мин
Количество просмотров 910
Блог компании VK Высокая производительность *Алгоритмы *Исследования и прогнозы в IT *
Кейс

Привет, Хабр! В команде ВКонтакте существует система управления репликацией и консенсусом в кластере, которая называется BARSiC (Binary Asynchronous Replication with Simple Consensus). Прежде всего она контролирует состав кластера, определяя, кто реплика, а кто — мастер. А при выходе мастера из строя реплики выбирают нового с непротиворечивой линейной историей. 

Для решения этой задачи команда ВКонтакте совместно с университетом ИТМО работали над научно-исследовательским проектом «Разработка моделей для верификации распределенных алгоритмов в системе BARSiC». В этой статье подробно расскажем о том, как мы в рамках проекта верифицировали выбранный для BARSiC алгоритм, и попутно исправили найденную в нём ошибку. 

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 1

Как написать хороший генератор

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.1K
Высокая производительность *Программирование *Совершенный код *C++ *
Туториал

В интернете невероятное количество статей о том "как написать свой генератор на С++20", но почти все они сводятся к новичковым хело вордам и почти ни одной статьи о том как написать хороший генератор. Что ж, это нужно исправлять!

next
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 4

Бизнес-ключ и суррогатный ключ нужны оба

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 3K
Высокая производительность *Анализ и проектирование систем *IT-стандарты *Big Data *Хранилища данных *
Аналитика

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

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 28

Приложения алгебры кортежей. Часть 1. Гибкая система счисления с простыми основаниями

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 1.9K
Высокая производительность *Алгоритмы *Математика *Сжатие данных *
Мнение

В настоящее время известно большое число систем счисления. Подробный перечень (не знаю, насколько полный) приведен в англоязычной Википедии. В этом списке я не нашел ту систему, которая будет изложена здесь. Она относится к классу систем с переменным основанием (mixed radix). Предлагаю ее назвать Flexible number system with a Prime Radixes, сокращенно FPR-системой счисления.

Но для того, чтобы ее понять, необходимы знания некоторых понятий алгебры кортежей (АК) и частично упорядоченных множеств хотя бы в том объеме, который имеется в соответствующей статье в Википедии. Об АК кратко было рассказано в статье «Как совместить логику и семантику в одной алгебраической системе». Там же есть ссылки на публикации с более подробным описанием АК.

В данной статье будут обоснованы следующие преимущества предложенной системы счисления:

• она универсальна - позволяет ТОЧНО выразить все (за исключением нуля) конечные целые и рациональные (с любым ненулевым целым числом в знаменателе) числа, а также некоторые классы иррациональных чисел;

• ее использование позволяет сократить вычислительную сложность алгоритма умножения чисел;

• в ней существенно уменьшается объем памяти для записи и хранения многих больших чисел.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 30

Ближайшие события

«Стачка» — IT-конференция
Дата 15 – 16 сентября
Время 09:00 – 18:30
Место Ульяновск
Business⁢ Day: Retail CPG
Дата 28 сентября
Время 09:50 – 14:00
Место Онлайн
XIX конференция разработчиков свободных программ «Базальт СПО»
Дата 29 сентября – 1 октября
Время 10:00 – 19:00
Место Переславль-Залесский Онлайн

Как освоить Tarantool за 3 месяца и выжить: учимся на ошибках DevOps-инженера

Время на прочтение 7 мин
Количество просмотров 5.6K
Блог компании VK Блог компании Cloud.ru Высокая производительность *DevOps *Tarantool *


Освоение нового инструмента и его внедрение в работающий проект — практически типовая задача для многих компаний. Более того, часто DevOps-инженерам и другим специалистам приходится изучать новый инструмент в сжатые сроки, в том числе когда компетенцию в команде надо нарабатывать с нуля. Поэтому сложности и ошибки — практически неотъемлемая часть обучения. 
Читать дальше →
Всего голосов 32: ↑29 и ↓3 +26
Комментарии 1

Большое обновление Propan Framework. Куда дальше?

Время на прочтение 3 мин
Количество просмотров 1.8K
Высокая производительность *Open source *Python *Микросервисы *
Обзор

Пару месяцев назад я рассказал вам о своем фреймворке для работы с различными брокерами сообщений - Propan.

Тезисно повторю: это идейный наследник FastAPI, но для написания асинхронных микросервисов (привет, Kombu). Он настолько облегчает взаимодействие с брокерами сообщений, что данный архитектурный паттерн переходит из разряда

слишком сложно, это для хайлоад, некогда разбираться

в разряд

а давай отдадим нашему стажеру сервис, он по документации разберется

(Причем это реальный кейс)

Иногда полезно оглянуться назад, подвести черту и сложить в одну кучу все, что накопилось за время работы. И вот этот момент настал и для Propan. Я просто хочу вам рассказать о тех важных изменениях, которые я внедрил за прошедшие два месяца и планах на будущее.

Сейчас ваш фидбек очень важен, так как PropanV2 находится в активной работе и любое из ваших предложений сейчас может повлиять на него.

Ну что там у тебя
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 0

Всегда ли хорош Index Only Scan?

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 5.5K
Блог компании Тензор Высокая производительность *PostgreSQL *SQL *Администрирование баз данных *
Кейс

Среди применяемых в PostgreSQL методов доступа к данным Index Only Scan стоит особняком, считаясь у многих разработчиков "волшебной пилюлей" для ускорения работы запроса - мол, "Index Scan - плохо, Index Only Scan - хорошо, как только получим его в плане - все станет замечательно".

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

Читать далее
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 3

XML-RPC: Ускоряем работу сервера, пользуясь только стандартной библиотекой Python

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 574
Высокая производительность *Python *
Из песочницы

Кратно увеличим производительность приложения на основе xmlrpc.server из стандартной библиотеки Python.

Да ну?
Всего голосов 5: ↑3 и ↓2 +1
Комментарии 4

Поиск по произвольным параметрам

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.6K
Высокая производительность *Разработка веб-сайтов *MySQL *PostgreSQL *SQLite *
Туториал

Иногда (часто) во время разработки веб-сайта возникает необходимость реализовать поиск с фильтрацией, и отсортировать результаты по какому-то фиксированному полю: например, поиск товаров в интернет-магазине, поиск туров в турагентстве, показ логов с фильтрацией по содержимому, и т.д. Очень часто бывает так, что фильтрация должна осуществляться чуть ли не по любому полю (а полей десятки), а записей тысячи или даже миллионы. Если данных много, или же нужно их часто обновлять, то индекс на каждое поле не создать, ибо много места будут занимать, или же будут создавать слишком большую нагрузку на диск при записи, и приходится что-то придумывать. Давайте что-нибудь придумаем.

Давайте
Всего голосов 9: ↑3 и ↓6 -3
Комментарии 10

Как построить систему, способную выдерживать нагрузку в 5 млн rps

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 34K
Блог компании Ozon Tech Высокая производительность *IT-инфраструктура *Go *Распределённые системы *
Кейс

Всем привет! 

Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.

Читать далее
Всего голосов 114: ↑111 и ↓3 +108
Комментарии 58

Как разбить GPU на несколько частей и поделиться с коллегами: практическое пособие по работе с MIG

Время на прочтение 13 мин
Количество просмотров 4K
Блог компании Selectel Высокая производительность *IT-инфраструктура *Компьютерное железо Видеокарты
Туториал

Привет, Хабр! Меня зовут Антон, я — DevOps-инженер в отделе Data- и ML-продуктов Selectel. Последние три месяца исследовал интересную проблематику — шеринг GPU между конкурентными процессами и пользователями. В русскоязычном сегменте не смог найти ни одного оригинального материала — только переводы англоязычных статей.

После посещения пары докладов понял, что тема особенно актуальна: компании знают о шеринге GPU как о технологии, но пока не применяют ее. У меня же накопилось достаточно материалов, чтобы осветить эту тему более подробно и показать, как работает шеринг GPU на практике. Интересно? Самое время погрузиться под кат!
Читать дальше →
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 11

Вклад авторов