Search
Write a publication
Pull to refresh
5
0.2
Send message

Ускоряем валидацию UTF-8 в 10 раз (>10 ГБ/с): реализация алгоритма Lemire-Keiser на Go с ARM NEON

Reading time8 min
Views1.2K

UTF-8 валидация — одна из базовых операций при работе с текстом, которая выполняется миллионы раз в секунду в современных приложениях. Стандартная реализация в Go, хоть и корректная, далека от оптимальной по производительности. В этой статье расскажу, как мне удалось ускорить валидацию UTF-8 в 10 раз, используя SIMD‑инструкции ARM NEON и алгоритм из статьи «Validating UTF-8 In Less Than One Instruction Per Byte» Джона Кейзера и Дэниела Лемира.

Читать далее

Условная буферизация логов в Go

Level of difficultyEasy
Reading time3 min
Views2.1K

Условная буферизация логов в Go: как сократить расходы на логирование на 95% без потери контекста ошибок.

[ПРОБЛЕМА]
1M запросов → 10M логов → 💸

[РЕШЕНИЕ]
Буфер → Анализ → Решение

Сохранить только нужные

[РЕЗУЛЬТАТ]
95% экономии + полный контекст ошибок

Читать далее

Решение задачи с Route 256 на goalng

Level of difficultyMedium
Reading time7 min
Views2.3K

В этой статье разбирается решение задачи «Гистограммы» с контеста Route 256 от Ozon с помощью SIMD.

Условие задачи

Гистограммой является массив, каждый элемент которого указывает высоту столбика на соответствующей позиции. Две гистограммы считаются совпадающими, если при совмещении одной гистограммы с другой гистограммой, повёрнутой на угол 180°, получается ровный прямоугольник без наложений и пропусков.

Читать далее

Information

Rating
690-th
Registered
Activity