home.social

#оптимизации — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #оптимизации, aggregated by home.social.

  1. Garbage Collector от мала до велика или как создаются и отчищаются ваши объекты

    Когда мы говорим о сборщике мусора, мы часто ограничиваемся фразой «он удаляет неиспользуемые объекты», однако в реальности GC — это сложнейшая система, которая взаимодействует с виртуальной памятью, потоками, стеком, регистрами и графом ссылок, и без понимания этих взаимодействий невозможно осознанно писать высоконагруженные приложения. В этом материале мы сосредоточимся именно на GC, рассматривая его не как магию runtime, а как конкретный набор алгоритмов и инженерных компромиссов. За каждой строкой new, за каждой локальной переменной и за каждым вызовом функции стоит конкретная архитектура процессора, виртуальная память операционной системы и довольно агрессивная инженерная математика сборщика мусора. Чтобы действительно понимать GC, необходимо начать не с него, а с того, на чём он стоит — с регистров, стека и кучи, поскольку именно они формируют корневую модель, на которую опирается любой современный runtime. Перед тем как мы начнем давайте разберемся в типах хранилищ памяти и как они работают:

    habr.com/ru/articles/1002194/

    #GC #Сборка_мусора #performance #оптимизации #optimization #green_tea #stackoverflow #span #heap #jit

  2. Garbage Collector от мала до велика или как создаются и отчищаются ваши объекты

    Когда мы говорим о сборщике мусора, мы часто ограничиваемся фразой «он удаляет неиспользуемые объекты», однако в реальности GC — это сложнейшая система, которая взаимодействует с виртуальной памятью, потоками, стеком, регистрами и графом ссылок, и без понимания этих взаимодействий невозможно осознанно писать высоконагруженные приложения. В этом материале мы сосредоточимся именно на GC, рассматривая его не как магию runtime, а как конкретный набор алгоритмов и инженерных компромиссов. За каждой строкой new, за каждой локальной переменной и за каждым вызовом функции стоит конкретная архитектура процессора, виртуальная память операционной системы и довольно агрессивная инженерная математика сборщика мусора. Чтобы действительно понимать GC, необходимо начать не с него, а с того, на чём он стоит — с регистров, стека и кучи, поскольку именно они формируют корневую модель, на которую опирается любой современный runtime. Перед тем как мы начнем давайте разберемся в типах хранилищ памяти и как они работают:

    habr.com/ru/articles/1002194/

    #GC #Сборка_мусора #performance #оптимизации #optimization #green_tea #stackoverflow #span #heap #jit

  3. Garbage Collector от мала до велика или как создаются и отчищаются ваши объекты

    Когда мы говорим о сборщике мусора, мы часто ограничиваемся фразой «он удаляет неиспользуемые объекты», однако в реальности GC — это сложнейшая система, которая взаимодействует с виртуальной памятью, потоками, стеком, регистрами и графом ссылок, и без понимания этих взаимодействий невозможно осознанно писать высоконагруженные приложения. В этом материале мы сосредоточимся именно на GC, рассматривая его не как магию runtime, а как конкретный набор алгоритмов и инженерных компромиссов. За каждой строкой new, за каждой локальной переменной и за каждым вызовом функции стоит конкретная архитектура процессора, виртуальная память операционной системы и довольно агрессивная инженерная математика сборщика мусора. Чтобы действительно понимать GC, необходимо начать не с него, а с того, на чём он стоит — с регистров, стека и кучи, поскольку именно они формируют корневую модель, на которую опирается любой современный runtime. Перед тем как мы начнем давайте разберемся в типах хранилищ памяти и как они работают:

    habr.com/ru/articles/1002194/

    #GC #Сборка_мусора #performance #оптимизации #optimization #green_tea #stackoverflow #span #heap #jit

  4. Garbage Collector от мала до велика или как создаются и отчищаются ваши объекты

    Когда мы говорим о сборщике мусора, мы часто ограничиваемся фразой «он удаляет неиспользуемые объекты», однако в реальности GC — это сложнейшая система, которая взаимодействует с виртуальной памятью, потоками, стеком, регистрами и графом ссылок, и без понимания этих взаимодействий невозможно осознанно писать высоконагруженные приложения. В этом материале мы сосредоточимся именно на GC, рассматривая его не как магию runtime, а как конкретный набор алгоритмов и инженерных компромиссов. За каждой строкой new, за каждой локальной переменной и за каждым вызовом функции стоит конкретная архитектура процессора, виртуальная память операционной системы и довольно агрессивная инженерная математика сборщика мусора. Чтобы действительно понимать GC, необходимо начать не с него, а с того, на чём он стоит — с регистров, стека и кучи, поскольку именно они формируют корневую модель, на которую опирается любой современный runtime. Перед тем как мы начнем давайте разберемся в типах хранилищ памяти и как они работают:

    habr.com/ru/articles/1002194/

    #GC #Сборка_мусора #performance #оптимизации #optimization #green_tea #stackoverflow #span #heap #jit

  5. 24 «привычки» оптимизации изображений

    Я работаю с графикой для web с тех бородатых времен, когда случайное нажатие кнопки wap на телефоне могло привести к инфаркту и моментальному списанию всех средств на счете. В погоне за мобильной доступностью цифровых продуктов в те времена приходилось исхитриться каждый раз и делать это по новому. Сегодня, специалисты в вэб — как спецы в геймдеве «оптимизация? не не слышал» для игр у тебя должна быть 5090, в для сайтов 5g и гигабит, 2026 ведь на носу. Я решил поделится теми «привычками» оптимизации контента/графики, которые уже 20 лет в моем арсенале и остаются актуальными и по сей день.

    habr.com/ru/articles/969236/

    #webразработка #графика #графика_для_сайта #адаптивная_вёрстка #адаптивный_вебдизайн #адаптивный_сайт #оптимизация_изображений #оптимизация #оптимизации #svg

  6. 24 «привычки» оптимизации изображений

    Я работаю с графикой для web с тех бородатых времен, когда случайное нажатие кнопки wap на телефоне могло привести к инфаркту и моментальному списанию всех средств на счете. В погоне за мобильной доступностью цифровых продуктов в те времена приходилось исхитриться каждый раз и делать это по новому. Сегодня, специалисты в вэб — как спецы в геймдеве «оптимизация? не не слышал» для игр у тебя должна быть 5090, в для сайтов 5g и гигабит, 2026 ведь на носу. Я решил поделится теми «привычками» оптимизации контента/графики, которые уже 20 лет в моем арсенале и остаются актуальными и по сей день.

    habr.com/ru/articles/969236/

    #webразработка #графика #графика_для_сайта #адаптивная_вёрстка #адаптивный_вебдизайн #адаптивный_сайт #оптимизация_изображений #оптимизация #оптимизации #svg

  7. 24 «привычки» оптимизации изображений

    Я работаю с графикой для web с тех бородатых времен, когда случайное нажатие кнопки wap на телефоне могло привести к инфаркту и моментальному списанию всех средств на счете. В погоне за мобильной доступностью цифровых продуктов в те времена приходилось исхитриться каждый раз и делать это по новому. Сегодня, специалисты в вэб — как спецы в геймдеве «оптимизация? не не слышал» для игр у тебя должна быть 5090, в для сайтов 5g и гигабит, 2026 ведь на носу. Я решил поделится теми «привычками» оптимизации контента/графики, которые уже 20 лет в моем арсенале и остаются актуальными и по сей день.

    habr.com/ru/articles/969236/

    #webразработка #графика #графика_для_сайта #адаптивная_вёрстка #адаптивный_вебдизайн #адаптивный_сайт #оптимизация_изображений #оптимизация #оптимизации #svg

  8. 24 «привычки» оптимизации изображений

    Я работаю с графикой для web с тех бородатых времен, когда случайное нажатие кнопки wap на телефоне могло привести к инфаркту и моментальному списанию всех средств на счете. В погоне за мобильной доступностью цифровых продуктов в те времена приходилось исхитриться каждый раз и делать это по новому. Сегодня, специалисты в вэб — как спецы в геймдеве «оптимизация? не не слышал» для игр у тебя должна быть 5090, в для сайтов 5g и гигабит, 2026 ведь на носу. Я решил поделится теми «привычками» оптимизации контента/графики, которые уже 20 лет в моем арсенале и остаются актуальными и по сей день.

    habr.com/ru/articles/969236/

    #webразработка #графика #графика_для_сайта #адаптивная_вёрстка #адаптивный_вебдизайн #адаптивный_сайт #оптимизация_изображений #оптимизация #оптимизации #svg

  9. Оптимизируя фаянс

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

    habr.com/ru/articles/959674/

    #застройщики #застройка #застройщик #застрощики #схемы #оптимизация #оптимизация_сайта #оптимизация_изображений #оптимизации

  10. Оптимизируя фаянс

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

    habr.com/ru/articles/959674/

    #застройщики #застройка #застройщик #застрощики #схемы #оптимизация #оптимизация_сайта #оптимизация_изображений #оптимизации

  11. Оптимизируя фаянс

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

    habr.com/ru/articles/959674/

    #застройщики #застройка #застройщик #застрощики #схемы #оптимизация #оптимизация_сайта #оптимизация_изображений #оптимизации

  12. Оптимизируя фаянс

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

    habr.com/ru/articles/959674/

    #застройщики #застройка #застройщик #застрощики #схемы #оптимизация #оптимизация_сайта #оптимизация_изображений #оптимизации

  13. [Перевод] Как замедлить программу и почему это может быть полезно?

    Основная часть исследований производительности языков программирования задаётся разными вариациями единственного вопроса: как нам ускорить некую конкретную программу? Реже мы исследуем, как она может использовать меньше памяти. Это означает, что подавляющая масса исследований сосредоточена исключительно на снижении объёма ресурсов, необходимых для выполнения какой-то вычислительной задачи. Тогда почему нас может интересовать, как замедлять программы?

    habr.com/ru/articles/942564/

    #профилировщик #оптимизация_кода #состояние_гонки #оптимизации #профилирование_производительности

  14. [Перевод] Удивительная оптимизация размера 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 #оптимизация_кода #оптимизации

  15. [Перевод] Удивительная оптимизация размера 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 #оптимизация_кода #оптимизации

  16. [Перевод] Удивительная оптимизация размера 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 #оптимизация_кода #оптимизации

  17. [Перевод] Удивительная оптимизация размера 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 #оптимизация_кода #оптимизации

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

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

    habr.com/ru/articles/860544/

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

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

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

    habr.com/ru/articles/860544/

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

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

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

    habr.com/ru/articles/860544/

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

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

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

    habr.com/ru/articles/860544/

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

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

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

    habr.com/ru/companies/okko/art

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

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

    Допустим, у нас есть массив чисел с плавающей запятой, и мы хотим их суммировать. Можно наивно подумать, что их достаточно просто сложить, например, на 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/

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

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

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

    habr.com/ru/companies/simbirso

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

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

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

    habr.com/ru/articles/784816/

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

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

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

    habr.com/ru/articles/784816/

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

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

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

    habr.com/ru/companies/ruvds/ar

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