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

Цена одной строчки

const data = await fetch('/api/dashboard').then(r => r.json());

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

Но знаете ли вы, что эта строчка стоит? Не абстрактно – «ну, это сетевой вызов». А конкретно: в байтах, миллисекундах, рублях и часах дежурства инженера в три часа ночи по Москве.

Давайте разберём один fetch на атомы. Снимем слои абстракций и посмотрим, что на самом деле скрывается за фасадом «просто сетевого вызова».


Запрос уходит

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

Цена одной строчки

const data = await fetch('/api/dashboard').then(r => r.json());

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

Но знаете ли вы, что эта строчка стоит? Не абстрактно – «ну, это сетевой вызов». А конкретно: в байтах, миллисекундах, рублях и часах дежурства инженера в три часа ночи по Москве.

Давайте разберём один fetch на атомы. Снимем слои абстракций и посмотрим, что на самом деле скрывается за фасадом «просто сетевого вызова».


Запрос уходит

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

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

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

У меня есть привычка раз в несколько недель вкратце просматривать лог коммитов OpenJDK. Многие коммиты слишком сложны для того, чтобы я мог разобраться с ними за то ограниченное время, которое я выделил для своего... специфичного хобби. Но иногда мне удаётся найти нечто любопытное.

На прошлой неделе моё внимание привлёк этот коммит:

858d2e434dd 8372584: [Linux]: Замена чтения proc для получения CPUtime потока на clock_gettime

diffstat выглядел интересно: +96 вставок, -54 удалений. В changeset был добавлен бенчмарк JMH из 55 строк, что означало реальное уменьшение кода продакшена.

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

Кратко

Black-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления O(log N) и Читать полностью »

Очень краткий рассказ про семь проектов, построенных одним инженером на унаследованной платформе

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

Хотелось не просто ускорить метрики, а выстроить полноценную систему, которая бы работала для пользователя как обычное SPA-приложение: быстро, плавно, визуально современно, а главное с уважением к пользователям.

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

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

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

Что мешает производственным предприятиям достигать целей

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

TL;DR: В этой статье я хочу показать, почему распространённая фраза "не занимайтесь преждевременной оптимизацией" почти всегда используется неправильно, особенно в современных фронтенд-проектах. Я посмотрю на исторический контекст, разберу, что именно Кнут называл оптимизацией, и почему многие вещи, которые считаются "преждевременной оптимизацией", на деле — нормальная инженерная дисциплина.

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

В современных корпоративных системах обработки отчетности (например, XBRL-форматы для регуляторов или банков) одна из ключевых задач это эффективное хранение и загрузка больших объёмов структу­рированных данных. В экосистеме .NET Core такие данные часто представлены в виде объектов с комплексными связями, что требует продуманной стратегии сериализации и десериализации.

Одним из таких случаев является работа с объектами ReportItem объединяющими в себе названия бизнес-факты отчета и координаты в гиперкубе (временной охват, измерения и атрибуты). При создании отчетов данные загружаются в память в виде словаря Читать полностью »


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