Открытый канал ID 68836113511920

Типичный программист | IT, программирование, разработка, ИИ

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

Другие каналы: https://max.ru/id165042823905_biz

Правила общения: tprg.ru/rules

Сайт: tprg.ru/site

Разместить рекламу: t.me/tproger_sales_bot

VK: vk.com/tproger

TG: t.me/tproger

Каналов в рубрике
4 753
Место этого канала
№ 358
Открыть рубрику →
Каналов в рубрике
1 734
Место этого канала
№ 94
Открыть рубрику →

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

Axiom ускорила сортировку колонок в 2–26 раз с помощью разных алгоритмов

Если в колонке всего 15 разных значений, зачем снова и снова сравнивать их при сортировке? В Axiom заменили общую сортировку Go алгоритмами, которые учитывают, как хранятся данные.

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

В разборе Axiom показано, как объединить эти алгоритмы интерфейсом Sortable: движок вызывает один метод, а колонка выбирает способ сортировки. Ускорения измерены на блоках из 65 тысяч строк на Apple M4 и относятся к сортировке, а не запросам целиком.
Просмотры: 191
Перейти в пост Открыть в MAX Сообщить о неточности
Сортировку ускорили в 26 раз. Общий алгоритм просто знал слишком мало

У Axiom разные колонки сортировались одинаково: сравнивали значения по два, каждый раз превращая их во внутренний общий тип. Удобно. Только колонка с уровнями логов уже знала, что разных значений в ней не больше пятнадцати. А сортировка этой подсказкой не пользовалась.

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

На блоках примерно по 65 тысяч строк, на Apple M4, ускорение разных типов составило 2–26 раз. Максимум достался enum. Это не обещание ускорить любую сортировку: выигрыш появился там, где данные уже имели полезную структуру. Её не пришлось придумывать, достаточно было перестать терять при каждом сравнении.
Просмотры: 164
Перейти в пост Открыть в MAX Сообщить о неточности
Сколько памяти стоит пять лет развития libcurl

Новые функции добавляются по одной, и расход памяти может расти так же незаметно. Дэниел Стенберг сравнил libcurl с версией пятилетней давности: при загрузке файла на 512 МБ по HTTP пиковая память выросла на 1,6%, а число выделений памяти на 11%.

Чтобы ловить случайный рост раньше, в тесты curl добавили проверку размеров 15 структур. У каждой есть верхний предел: превысили его, тест падает. Ради новой функции лимит можно пересмотреть, но увеличение уже придётся заметить.

В разборе есть сравнение размеров структур и графики памяти на конкретной нагрузке. Замеры сделаны без шифрования: при HTTPS библиотека шифрования добавляет свои выделения памяти, которые здесь не учитываются.

#opensource
Просмотры: 172
Перейти в пост Открыть в MAX Сообщить о неточности
Пять лет новых функций. Сколько памяти теперь ест libcurl?

Обычно от такого сравнения ждёшь грустного графика. Дэниел Стенберг, автор curl, сопоставил libcurl 7.75.0 и 8.19.0-DEV и получил смешанную картину: структура одного соединения уменьшилась с 1472 до 912 байт, а две другие выросли.

Для десяти передач и двадцати открытых соединений сумма этих трёх структур оказалась на 10 000 байт меньше. Но при скачивании одного файла на 512 МБ пик памяти вырос на 1,6%, а число аллокаций увеличилось с 96 до 107. Один красивый показатель тут легко спрятал бы второй.

В тестах curl теперь есть проверка размеров пятнадцати важных структур. Превысил лимит — сборка упала, дальше приходится объяснять рост. Замеры Стенберга сделаны на Linux с HTTP без TLS. Память криптографической библиотеки в эту историю не входит.
Просмотры: 177
Перейти в пост Открыть в MAX Сообщить о неточности
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «Типичный программист | IT, программирование, разработка, ИИ» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти