Рубрика «высокая производительность» - 25

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

Бандлинг JavaScript-кода и производительность: передовые методики - 1

Автор статьи, перевод которой мы сегодня публикуем, собирается исследовать три подхода к бандлингу JavaScript-проектов на примере простого Hello World-приложения, созданного с помощью React. Некоторые из приводимых им примеров подразумевают знание читателем основ сборщиков модулей, таких, как Webpack, который, похоже, является сегодня самым популярным среди подобных инструментов.
Читать полностью »

Особенности профилирования программ на C++ - 1

Временами бывает нужно отпрофилировать производительность программы или потребление памяти в программе на C++. К сожалению, зачастую это сделать не так просто как может показаться.

Здесь будут рассмотрены особенности профилирования программ с использованием инструментов valgrind и google perftools. Материал получился не очень структурированным, это скорее попытка собрать базу знаний «для личных целей», чтобы в будущем не приходилось судорожно вспоминать, «а почему не работает то» или «а как сделать это». Скорее всего, здесь будут затронуты далеко не все неочевидные случаи, если вам есть что добавить, пишите пожалуйста в комментарии.

Все примеры будут запускаться в системе linux. Читать полностью »

Привет, Хабр !

Работая с Javascript / Typescript, я давно заметил, что асинхронное API работает медленней чем аналогичное синхронное, и даже знал что так должно быть. Но на последнем проекте асинхронная работа с файловой системой стала узким местом, и я озаботился замерами.

Известно, что await можно использовать только внутри функций или блоков async, а это значит, что если у вас самый нижний уровень API асинхронный, то придется использовать async/await практически везде, даже там, где оно очевидно не нужно.

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

Какую цену мне приходится платить за каждый асинхронный вызов?
Результаты тестов удручают...

Читать полностью »

image

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

Куб-на-кубе, метакластеры, соты, распределение ресурсов

Как облако Alibaba Cloud управляет десятками тысяч кластеров Kubernetes с помощью… Kubernetes - 1

Рис. 1. Экосистема Kubernetes в облаке Alibaba Cloud

С 2015 года Alibaba Cloud Container Service for Kubernetes (ACK) является одним из самых быстрорастущих облачных сервисов в Alibaba Cloud. Он обслуживает многочисленных клиентов, а также поддерживает внутреннюю инфраструктуру Alibaba и другие облачные сервисы компании.

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

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

image

Приветствую всех в новом 2020-м году.

С момента публикации первого поста про Mash прошел практически ровно 1 год.
За этот год язык был сильно доработан, были продуманы многие его аспекты и определен вектор развития.

Этим всем я рад поделиться с сообществом.

Читать полностью »

image

  • 42 миллиарда посещений за год. В среднем 115 миллионов посещений в день. Это больше чем население Канады, Австралии, Польши и Нидерландов вместе взятых.
  • 6,83 миллиона новых видео загружено за год. 1,36 млн часов = 169 лет контента.
  • 6,597 экзабайт данных передано за год, это примерно 18 петабайт в день, 209 гигабайт в секунду. (Если это всё залить на жесткие диски, то высота будет выше 100км.)
  • 70 миллионов сообщений послали пользователи друг другу.
  • 11,5 миллиона комментариев к видео.
  • 98 000 новых моделей присоединились к ресурсу.
  • Самые популярные темы: «japanese», «hentai», «lesbian» .
  • Самые активные страны: США, Япония, Британия (Россия на 18 месте).
  • Среднее время, проведенное на сайте — 10 минут 28 секунд. (Самые долгие в Тайланде: 11 минут 21 сек, а русские еле попали в 20-ку со своими 8 минутами и 35 секундами.)
  • Самое популярное время — полночь.
  • Самый популярный день — воскресенье.
  • Самый непопулярный день — пятница.
  • Средний возраст посетителей — 36 лет.

Читать полностью »

Привет! Наборы данных для Big Data и машинного обучения экспоненциально растут и надо успевать их обрабатывать. Наш пост о еще одной инновационной технологии в области высокопроизводительных вычислений (HPC, High Performance Computing), показанной на стенде Kingston на Supercomputing-2019. Это применение Hi-End систем хранения данных (СХД) в серверах с графическими процессорами (GPU) и технологией шины GPUDirect Storage. Благодаря прямому обмену данными между СХД и GPU, минуя CPU, на порядок ускоряется загрузка данных в GPU-ускорители, поэтому приложения Big Data выполняются на максимуме производительности, которую обеспечивают GPU. В свою очередь, разработчиков HPC-систем интересуют достижения в области СХД с высочайшей скоростью ввода/вывода — таких, какие выпускает Kingston.

5.8 млн IOPS: зачем так много? - 1
Читать полностью »

Сальса, румба, капоэйра, яркие костюмы, энергичная бразильская музыка — в SAP Digital Space проходит бразильский карнавал. Продакты, управляющие и директора IT-компаний несколько минут назад слушали как захватывать рынки, строить программу обучения и анализировать данные, и вот они подтанцовывают в такт музыке, фотографируются и улыбаются. Так завершился Product Fest, последняя конференция Онтико в 2019 году. Это значит, что пришло время подвести итоги: осознать, что произошло, посмотреть назад, вспомнить интересные моменты и провести ретроспективу.

Бразилия, темная магия, Mortal Kombat, Марс и 15000 человек. Итоги года Онтико - 1
Читать полностью »

Привет!

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

  1. Для императивной реализации — выигрыш от Rust получился всего 20 %. Это означает, что JVM вплотную приблизилась к нативной производительности, и тут уже нечего улучшать.
  2. Для функциональной реализации — Rust оказался быстрее в 4.5 раза, потребление памяти снизилось в 5.5 раза, а отсутствие сборщика мусора сделало программу более стабильной (меньше разброс показателей). Это интересно для тех, кто хочет писать быстрые функциональные программы.
  3. Концепция единственного владельца данных (и единственной мутабельной ссылки), принятая в Rust, очень близка концепции иммутабельности, в результате чего функциональные алгоритмы, основанные на неизменяемости, рекурсии и копировании, легко ложатся на Rust практически без переписывания, тогда как императивные алгоритмы заставляют редизайнить код, учитывать мутабельность ссылок, времена жизни, и т.д.

Вывод — Rust как будто специально создан для ФП, хотя возможности его синтаксиса пока не дотягивают до Scala.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js