#%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8

2025-04-11

[Перевод] Удивительная оптимизация размера enum в компиляторе Rust

Enum — одна из самых популярных фич Rust. Тип enum может иметь одно из значений в заданном множестве вариантов. /// Foo имеет значение или 32-битного integer, или символа. enum Foo { Int(u32), Char(char), } Значениями типа Foo могут быть или integer (например, вариант Foo::Int(3) с полезной нагрузкой 3 ), или символы (например, вариант Foo::Char('A') с полезной нагрузкой 'A' ). struct можно считать AND -комбинациями их полей, а enum — OR-комбинациями их вариантов. Этот пост посвящён удивительной оптимизации, выполняемой компилятором Rust с представлением в памяти значений enum , чтобы они занимали меньше места в памяти (спойлер: это не нишевая оптимизация). В общем случае, уменьшение размера значений может привести к ускорению программ, потому что значения передаются в регистрах CPU и в одну линию кэша CPU умещается больше значений.

habr.com/ru/articles/899834/

#компиляторные_оптимизации #перечисления #enum #оптимизация_кода #оптимизации

2024-11-22

Как повысить свою частоту вибрации?

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

habr.com/ru/articles/860544/

#спок #повышенная_частота_вибрации #фантазии #как_процветать #квантовые_вычисления #энергия_чакр #повышение_частоты_вибрации #просветление #оптимизации #биохакинг

2024-08-02

История оптимизации Python сервиса: пара простых системных улучшений

Привет, Хабр! В двух предыдущих статьях здесь и тут мы рассказывали историю создания одного из компонентов платформы экспериментов в компании Okko — сервис сплитования трафика. В тех статьях говорилось о множестве изменений и улучшений, которые претерпел Python-код, чтобы работать достаточно быстро. Но как бы качественно не был написан код, все усилия могут сойти на нет, если он будет запущен в неправильной среде. В этой статье продолжим рассказ об оптимизациях и улучшениях, но в этот раз речь будет идти не столько об особенностях предметной области и решаемой бизнес-задачи, сколько о том, как мы архитектурно организовали работу сервиса для получения минимального времени ответа.

habr.com/ru/companies/okko/art

#Python #вебразработа #оптимизации #gil

2024-06-04

[Перевод] Укрощаем суммы с плавающей запятой

Допустим, у нас есть массив чисел с плавающей запятой, и мы хотим их суммировать. Можно наивно подумать, что их достаточно просто сложить, например, на Rust. Однако это запросто может привести к произвольно большой накопленной погрешности. Давайте проверим: naive_sum(&vec![1.0; 1_000_000]) = 1000000.0 naive_sum(&vec![1.0; 10_000_000]) = 10000000.0 naive_sum(&vec![1.0; 100_000_000]) = 16777216.0 naive_sum(&vec![1.0; 1_000_000_000]) = 16777216.0 Ой-ёй… Что произошло? Проблема в том .что следующее 32-битное число с плавающей запятой после 16777216 — это 16777218 . Так что при вычислении 16777216 + 1 , значение округляется до ближайшего числа с плавающей запятой, имеющей чётную мантиссу, то есть снова до 16777216 . Мы зашли в тупик. К счастью, есть более совершенные способы суммирования массива.

habr.com/ru/articles/819135/

#числа_с_плавающей_запятой #сложение #оптимизации #округление #погрешности_округления

2024-03-19

Быстрый старт, или Как ускорить запуск iOS-приложений

Всем привет! Меня зовут Фируза, я iOS-разработчик в компании SimbirSoft. В этой статье мы попробуем разобраться, как ускорить запуск приложения, а именно: — что происходит от момента нажатия на иконку приложения до представления возможности пользователю взаимодействовать с UI; — как собрать актуальные метрики скорости запуска и отзывчивости приложения; — какие тактики применить, чтобы ускорить старт и отзывчивость запуска. Статья будет полезна для iOS-разработчиков любого уровня, желающих улучшить производительность своих приложений. Ускориться 🚀

habr.com/ru/companies/simbirso

#ios_development #swift #xcode #аналитика_мобильных_приложений #мобильная_разработка #производительность #оптимизации

2024-01-06

Поговорим об оптимизирующих компиляторах. Сказ восьмой: размотка циклов

Есть оптимизации, польза от которых очевидна всегда или почти всегда. Например, не делать лишнюю проверку лучше, чем делать. Не считать два раза одно и то же обычно лучше, чем считать (если только мы не упёрлись в нехватку регистров или имеем другие подобные проблемы на нижнем уровне). Вычислять выражения вне цикла выгоднее, чем в цикле. И так далее. Но есть оптимизации, применение которых имеет как плюсы, так и минусы. Выиграв в одном месте, мы можем получить отрицательные эффекты в другом. Например, сэкономив на количестве проверок, мы можем раздуть общий объём кода и поломать микрооптимизации. Каноничным примером такой оптимизации, решение вопроса об использовании которой больше похоже на искусство, чем на науку, является размотка циклов (Loop Unrolling), о которой мы сегодня поговорим. В статье я попробую осветить как можно больше (хотя, наверное, и не все) соображения о том, почему эту оптимизацию может быть нужно или не нужно применять. Смысл размотки цикла заключается в том, чтобы за счёт дублирования тела цикла уменьшить количества его итераций. В зависимости от того, как много мы знаем об исполнении цикла, размотка может быть полной, частичной или динамической.

habr.com/ru/articles/784816/

#оптимизации #циклы #unroll

2023-11-26

[Перевод] Четыре способа оптимизации ПО

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

habr.com/ru/companies/ruvds/ar

#ruvds_перевод #оптимизации #алгоритмы #python #rust #программирование

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst