home.social

#оптимизация_кода — Public Fediverse posts

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

  1. C++: Как мы докатились до Hello World в 2 МБ

    Казалось бы, современный С++ дает столько возможностей… Давайте попробуем препарировать всю эту необъятную мощь, начав с первого шага в любом языке программирования — «Hello World». Как реализации компиляторов встречают новичка, впервые написавшему свои первые строчки кода? Узнать, как же мы до такого докатились

    habr.com/ru/articles/1033206/

    #c++ #gcc #оптимизация_кода #оптимизация_программ #примеры_кода #деконструкция #низкоуровневое_программирование #сравнение_компиляторов #сравнение_версий

  2. C++: Как мы докатились до Hello World в 2 МБ

    Казалось бы, современный С++ дает столько возможностей… Давайте попробуем препарировать всю эту необъятную мощь, начав с первого шага в любом языке программирования — «Hello World». Как реализации компиляторов встречают новичка, впервые написавшему свои первые строчки кода? Узнать, как же мы до такого докатились

    habr.com/ru/articles/1033206/

    #c++ #gcc #оптимизация_кода #оптимизация_программ #примеры_кода #деконструкция #низкоуровневое_программирование #сравнение_компиляторов #сравнение_версий

  3. C++: Как мы докатились до Hello World в 2 МБ

    Казалось бы, современный С++ дает столько возможностей… Давайте попробуем препарировать всю эту необъятную мощь, начав с первого шага в любом языке программирования — «Hello World». Как реализации компиляторов встречают новичка, впервые написавшему свои первые строчки кода? Узнать, как же мы до такого докатились

    habr.com/ru/articles/1033206/

    #c++ #gcc #оптимизация_кода #оптимизация_программ #примеры_кода #деконструкция #низкоуровневое_программирование #сравнение_компиляторов #сравнение_версий

  4. C++: Как мы докатились до Hello World в 2 МБ

    Казалось бы, современный С++ дает столько возможностей… Давайте попробуем препарировать всю эту необъятную мощь, начав с первого шага в любом языке программирования — «Hello World». Как реализации компиляторов встречают новичка, впервые написавшему свои первые строчки кода? Узнать, как же мы до такого докатились

    habr.com/ru/articles/1033206/

    #c++ #gcc #оптимизация_кода #оптимизация_программ #примеры_кода #деконструкция #низкоуровневое_программирование #сравнение_компиляторов #сравнение_версий

  5. Понять Big O раз и навсегда

    На локалке всё летает, а на проде ложится замертво? Дело в масштабировании. Big O — это не скучная теория для алгоритмических собеседований, а реальный инструмент, чтобы ваш код не «убивал» сервера. В этой статье я на простых примерах и без зубодробительной математики объясню, как оценивать сложность своих алгоритмов. От до — только суть, примеры на Python и немного здоровой иронии над медленным кодом.

    habr.com/ru/articles/1030772/

    #Алгоритмы #big_o #сложность_алгоритмов #python #обольшое #оценка_сложности #оптимизация_кода

  6. Понять Big O раз и навсегда

    На локалке всё летает, а на проде ложится замертво? Дело в масштабировании. Big O — это не скучная теория для алгоритмических собеседований, а реальный инструмент, чтобы ваш код не «убивал» сервера. В этой статье я на простых примерах и без зубодробительной математики объясню, как оценивать сложность своих алгоритмов. От до — только суть, примеры на Python и немного здоровой иронии над медленным кодом.

    habr.com/ru/articles/1030772/

    #Алгоритмы #big_o #сложность_алгоритмов #python #обольшое #оценка_сложности #оптимизация_кода

  7. Понять Big O раз и навсегда

    На локалке всё летает, а на проде ложится замертво? Дело в масштабировании. Big O — это не скучная теория для алгоритмических собеседований, а реальный инструмент, чтобы ваш код не «убивал» сервера. В этой статье я на простых примерах и без зубодробительной математики объясню, как оценивать сложность своих алгоритмов. От до — только суть, примеры на Python и немного здоровой иронии над медленным кодом.

    habr.com/ru/articles/1030772/

    #Алгоритмы #big_o #сложность_алгоритмов #python #обольшое #оценка_сложности #оптимизация_кода

  8. Понять Big O раз и навсегда

    На локалке всё летает, а на проде ложится замертво? Дело в масштабировании. Big O — это не скучная теория для алгоритмических собеседований, а реальный инструмент, чтобы ваш код не «убивал» сервера. В этой статье я на простых примерах и без зубодробительной математики объясню, как оценивать сложность своих алгоритмов. От до — только суть, примеры на Python и немного здоровой иронии над медленным кодом.

    habr.com/ru/articles/1030772/

    #Алгоритмы #big_o #сложность_алгоритмов #python #обольшое #оценка_сложности #оптимизация_кода

  9. Deckhouse Prom++: как мы посадили Prometheus на RAM-диету и сэкономили 89 % памяти в хранилище данных

    Утро: 3,8 ТБ памяти на кластеры Prometheus. Вечер: 0,6 ТБ. Между ними — переход на Deckhouse Prom++. Мы потратили месяцы на внимательный анализ данных и разработку: писали свои структуры данных на С++, экономя каждый байт и охотясь за каждой наносекундой производительности. Разнообразные энкодеры для специфических данных, вектор с дырками и упакованные структуры — в статье делимся деталями реализации Open Source-проекта, который вы можете уже сейчас использовать для реальной экономии на мониторинге.

    habr.com/ru/companies/flant/ar

    #prom++ #c++ #оптимизация_кода #prometheus #deckhouse #deckhouse_prom++ #мониторинг #observability

  10. Deckhouse Prom++: как мы посадили Prometheus на RAM-диету и сэкономили 89 % памяти в хранилище данных

    Утро: 3,8 ТБ памяти на кластеры Prometheus. Вечер: 0,6 ТБ. Между ними — переход на Deckhouse Prom++. Мы потратили месяцы на внимательный анализ данных и разработку: писали свои структуры данных на С++, экономя каждый байт и охотясь за каждой наносекундой производительности. Разнообразные энкодеры для специфических данных, вектор с дырками и упакованные структуры — в статье делимся деталями реализации Open Source-проекта, который вы можете уже сейчас использовать для реальной экономии на мониторинге.

    habr.com/ru/companies/flant/ar

    #prom++ #c++ #оптимизация_кода #prometheus #deckhouse #deckhouse_prom++ #мониторинг #observability

  11. Deckhouse Prom++: как мы посадили Prometheus на RAM-диету и сэкономили 89 % памяти в хранилище данных

    Утро: 3,8 ТБ памяти на кластеры Prometheus. Вечер: 0,6 ТБ. Между ними — переход на Deckhouse Prom++. Мы потратили месяцы на внимательный анализ данных и разработку: писали свои структуры данных на С++, экономя каждый байт и охотясь за каждой наносекундой производительности. Разнообразные энкодеры для специфических данных, вектор с дырками и упакованные структуры — в статье делимся деталями реализации Open Source-проекта, который вы можете уже сейчас использовать для реальной экономии на мониторинге.

    habr.com/ru/companies/flant/ar

    #prom++ #c++ #оптимизация_кода #prometheus #deckhouse #deckhouse_prom++ #мониторинг #observability

  12. Deckhouse Prom++: как мы посадили Prometheus на RAM-диету и сэкономили 89 % памяти в хранилище данных

    Утро: 3,8 ТБ памяти на кластеры Prometheus. Вечер: 0,6 ТБ. Между ними — переход на Deckhouse Prom++. Мы потратили месяцы на внимательный анализ данных и разработку: писали свои структуры данных на С++, экономя каждый байт и охотясь за каждой наносекундой производительности. Разнообразные энкодеры для специфических данных, вектор с дырками и упакованные структуры — в статье делимся деталями реализации Open Source-проекта, который вы можете уже сейчас использовать для реальной экономии на мониторинге.

    habr.com/ru/companies/flant/ar

    #prom++ #c++ #оптимизация_кода #prometheus #deckhouse #deckhouse_prom++ #мониторинг #observability

  13. Легаси и минус 99% времени: пошаговый разбор оптимизации

    Всем привет! Меня зовут Михаил, я главный эксперт в ОТП Банке. Думаю, многие из вас сталкивались с легаси, которое нужно дорабатывать и оптимизировать. Сегодня хочу поделиться реальным кейсом как мы ускорили отправку данных в смежную систему. Разберем всё по шагам, с замерами производительности. Поехали! Смотрим вместе

    habr.com/ru/articles/1024814/

    #java #kotlin #spring #spring_boot #оптимизация #оптимизация_кода #многопоточность #postgresql #hibernate #legacy

  14. Легаси и минус 99% времени: пошаговый разбор оптимизации

    Всем привет! Меня зовут Михаил, я главный эксперт в ОТП Банке. Думаю, многие из вас сталкивались с легаси, которое нужно дорабатывать и оптимизировать. Сегодня хочу поделиться реальным кейсом как мы ускорили отправку данных в смежную систему. Разберем всё по шагам, с замерами производительности. Поехали! Смотрим вместе

    habr.com/ru/articles/1024814/

    #java #kotlin #spring #spring_boot #оптимизация #оптимизация_кода #многопоточность #postgresql #hibernate #legacy

  15. Легаси и минус 99% времени: пошаговый разбор оптимизации

    Всем привет! Меня зовут Михаил, я главный эксперт в ОТП Банке. Думаю, многие из вас сталкивались с легаси, которое нужно дорабатывать и оптимизировать. Сегодня хочу поделиться реальным кейсом как мы ускорили отправку данных в смежную систему. Разберем всё по шагам, с замерами производительности. Поехали! Смотрим вместе

    habr.com/ru/articles/1024814/

    #java #kotlin #spring #spring_boot #оптимизация #оптимизация_кода #многопоточность #postgresql #hibernate #legacy

  16. Легаси и минус 99% времени: пошаговый разбор оптимизации

    Всем привет! Меня зовут Михаил, я главный эксперт в ОТП Банке. Думаю, многие из вас сталкивались с легаси, которое нужно дорабатывать и оптимизировать. Сегодня хочу поделиться реальным кейсом как мы ускорили отправку данных в смежную систему. Разберем всё по шагам, с замерами производительности. Поехали! Смотрим вместе

    habr.com/ru/articles/1024814/

    #java #kotlin #spring #spring_boot #оптимизация #оптимизация_кода #многопоточность #postgresql #hibernate #legacy

  17. [Перевод] Руководство по анализу и настройке производительности для современных процессоров. Анонс книги

    Привет, Хабр. Хотим поделиться с вами новостью о том, что завершаем более чем годичный фундаментальный проект - готовимся к выпуску русского издания знаменитой книги Дениса Бахвалова " Performance Analysis and Tuning on Modern CPUs: Learn to write fast software like a pro ". Денис теснейшим образом взаимодействовал с нашими редакторами, мы составили глоссарий к русскому изданию и уверены, что книга на долгие годы станет де-факто главным пособием по оптимизации производительности CPU. Книга выросла из многочисленных практических исследований, которыми Денис занимается в компании "Intel", и в качестве анонса мы хотим предложить вам перевод статьи автора, которая вышла ещё в 2019 году и может считаться рассказом о том, как зародилась идея будущей книги. В тексте под катом содержатся многочисленные ссылки на статьи Дениса из блога easyperf.net/notes/ , который также рекомендуем пристально изучить. Русскую книгу ждите в мае.

    habr.com/ru/companies/bhv_publ

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

  18. [Перевод] Руководство по анализу и настройке производительности для современных процессоров. Анонс книги

    Привет, Хабр. Хотим поделиться с вами новостью о том, что завершаем более чем годичный фундаментальный проект - готовимся к выпуску русского издания знаменитой книги Дениса Бахвалова " Performance Analysis and Tuning on Modern CPUs: Learn to write fast software like a pro ". Денис теснейшим образом взаимодействовал с нашими редакторами, мы составили глоссарий к русскому изданию и уверены, что книга на долгие годы станет де-факто главным пособием по оптимизации производительности CPU. Книга выросла из многочисленных практических исследований, которыми Денис занимается в компании "Intel", и в качестве анонса мы хотим предложить вам перевод статьи автора, которая вышла ещё в 2019 году и может считаться рассказом о том, как зародилась идея будущей книги. В тексте под катом содержатся многочисленные ссылки на статьи Дениса из блога easyperf.net/notes/ , который также рекомендуем пристально изучить. Русскую книгу ждите в мае.

    habr.com/ru/companies/bhv_publ

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

  19. [Перевод] Руководство по анализу и настройке производительности для современных процессоров. Анонс книги

    Привет, Хабр. Хотим поделиться с вами новостью о том, что завершаем более чем годичный фундаментальный проект - готовимся к выпуску русского издания знаменитой книги Дениса Бахвалова " Performance Analysis and Tuning on Modern CPUs: Learn to write fast software like a pro ". Денис теснейшим образом взаимодействовал с нашими редакторами, мы составили глоссарий к русскому изданию и уверены, что книга на долгие годы станет де-факто главным пособием по оптимизации производительности CPU. Книга выросла из многочисленных практических исследований, которыми Денис занимается в компании "Intel", и в качестве анонса мы хотим предложить вам перевод статьи автора, которая вышла ещё в 2019 году и может считаться рассказом о том, как зародилась идея будущей книги. В тексте под катом содержатся многочисленные ссылки на статьи Дениса из блога easyperf.net/notes/ , который также рекомендуем пристально изучить. Русскую книгу ждите в мае.

    habr.com/ru/companies/bhv_publ

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

  20. [Перевод] Руководство по анализу и настройке производительности для современных процессоров. Анонс книги

    Привет, Хабр. Хотим поделиться с вами новостью о том, что завершаем более чем годичный фундаментальный проект - готовимся к выпуску русского издания знаменитой книги Дениса Бахвалова " Performance Analysis and Tuning on Modern CPUs: Learn to write fast software like a pro ". Денис теснейшим образом взаимодействовал с нашими редакторами, мы составили глоссарий к русскому изданию и уверены, что книга на долгие годы станет де-факто главным пособием по оптимизации производительности CPU. Книга выросла из многочисленных практических исследований, которыми Денис занимается в компании "Intel", и в качестве анонса мы хотим предложить вам перевод статьи автора, которая вышла ещё в 2019 году и может считаться рассказом о том, как зародилась идея будущей книги. В тексте под катом содержатся многочисленные ссылки на статьи Дениса из блога easyperf.net/notes/ , который также рекомендуем пристально изучить. Русскую книгу ждите в мае.

    habr.com/ru/companies/bhv_publ

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

  21. Как я сократила время разработки на 50% одним решением

    В статье показан практический подход, который помогает сократить время на вёрстку, убрать лишние вопросы и сделать дизайн понятным без дополнительных объяснений. Если вы сталкивались с ситуациями, когда разработчик «не так понял макет», сроки вёрстки дизайна часто переносятся, коммуникация отделов дизайна и разработки хромает — этот материал для вас. Читать

    habr.com/ru/articles/1014944/

    #дизайн #дизайнсистема #оптимизация_кода #оптимизация_рабочего_времени #библиотеки_компонентов #UI #продуктивность #продуктивность_команд #верстка #разработка_приложений

  22. Как я сократила время разработки на 50% одним решением

    В статье показан практический подход, который помогает сократить время на вёрстку, убрать лишние вопросы и сделать дизайн понятным без дополнительных объяснений. Если вы сталкивались с ситуациями, когда разработчик «не так понял макет», сроки вёрстки дизайна часто переносятся, коммуникация отделов дизайна и разработки хромает — этот материал для вас. Читать

    habr.com/ru/articles/1014944/

    #дизайн #дизайнсистема #оптимизация_кода #оптимизация_рабочего_времени #библиотеки_компонентов #UI #продуктивность #продуктивность_команд #верстка #разработка_приложений

  23. Как я сократила время разработки на 50% одним решением

    В статье показан практический подход, который помогает сократить время на вёрстку, убрать лишние вопросы и сделать дизайн понятным без дополнительных объяснений. Если вы сталкивались с ситуациями, когда разработчик «не так понял макет», сроки вёрстки дизайна часто переносятся, коммуникация отделов дизайна и разработки хромает — этот материал для вас. Читать

    habr.com/ru/articles/1014944/

    #дизайн #дизайнсистема #оптимизация_кода #оптимизация_рабочего_времени #библиотеки_компонентов #UI #продуктивность #продуктивность_команд #верстка #разработка_приложений

  24. Как я сократила время разработки на 50% одним решением

    В статье показан практический подход, который помогает сократить время на вёрстку, убрать лишние вопросы и сделать дизайн понятным без дополнительных объяснений. Если вы сталкивались с ситуациями, когда разработчик «не так понял макет», сроки вёрстки дизайна часто переносятся, коммуникация отделов дизайна и разработки хромает — этот материал для вас. Читать

    habr.com/ru/articles/1014944/

    #дизайн #дизайнсистема #оптимизация_кода #оптимизация_рабочего_времени #библиотеки_компонентов #UI #продуктивность #продуктивность_команд #верстка #разработка_приложений

  25. [Перевод] 10 приёмов профессионала для ускорения кода на Python

    Команда Python for Devs подготовила перевод статьи о том, как делать код на Python быстрее без переписывания проектов с нуля. В статье 10 практичных приёмов — от sets и bisect до локальных функций и предвыделения памяти — которые дают реальный прирост скорости в типовых сценариях.

    habr.com/ru/articles/969848/

    #python #оптимизация #оптимизация_кода #производительность #sets #bisect #itertools #память #циклы #скорость

  26. Осознанная стоимость абстракций: Autoboxing в современной Java

    Мы живём во времена, когда на оперативной памяти для heap Java-приложений почти не экономят, а архитектурные решения, которые ещё недавно можно было назвать расточительными, всё чаще воспринимаются как best practices. Но не все коту масленица. Благодаря AI - буму, облачным вычислениям и микросервисной архитектуре с сотнями одновременно работающих инстансов, мы можем воочию наблюдать неукротимый рост стоимости оперативной памяти, что обязывает вернуться к рассмотрению принципов её экономии. В этих условиях привычные абстракции требуют переоценки. Сегодня я хочу напомнить об одной из самых распространенных в Java — autoboxing — механизме автоматической упаковки примитивных типов в соответствующие объекты-обертки. Приглашаю вас посмотреть на знакомый Java-код не глазами разработчика, а глазами JVM, сборщика мусора и процессора, и разобраться, как незаметные на уровне синтаксиса решения превращаются в аллокации, давление на GC и раздувание heap. Погрузиться

    habr.com/ru/articles/985620/

    #Java #boxing #оптимизация #оптимизация_кода #JVM #Autoboxing #Heap

  27. Осознанная стоимость абстракций: Autoboxing в современной Java

    Мы живём во времена, когда на оперативной памяти для heap Java-приложений почти не экономят, а архитектурные решения, которые ещё недавно можно было назвать расточительными, всё чаще воспринимаются как best practices. Но не все коту масленица. Благодаря AI - буму, облачным вычислениям и микросервисной архитектуре с сотнями одновременно работающих инстансов, мы можем воочию наблюдать неукротимый рост стоимости оперативной памяти, что обязывает вернуться к рассмотрению принципов её экономии. В этих условиях привычные абстракции требуют переоценки. Сегодня я хочу напомнить об одной из самых распространенных в Java — autoboxing — механизме автоматической упаковки примитивных типов в соответствующие объекты-обертки. Приглашаю вас посмотреть на знакомый Java-код не глазами разработчика, а глазами JVM, сборщика мусора и процессора, и разобраться, как незаметные на уровне синтаксиса решения превращаются в аллокации, давление на GC и раздувание heap. Погрузиться

    habr.com/ru/articles/985620/

    #Java #boxing #оптимизация #оптимизация_кода #JVM #Autoboxing #Heap

  28. Осознанная стоимость абстракций: Autoboxing в современной Java

    Мы живём во времена, когда на оперативной памяти для heap Java-приложений почти не экономят, а архитектурные решения, которые ещё недавно можно было назвать расточительными, всё чаще воспринимаются как best practices. Но не все коту масленица. Благодаря AI - буму, облачным вычислениям и микросервисной архитектуре с сотнями одновременно работающих инстансов, мы можем воочию наблюдать неукротимый рост стоимости оперативной памяти, что обязывает вернуться к рассмотрению принципов её экономии. В этих условиях привычные абстракции требуют переоценки. Сегодня я хочу напомнить об одной из самых распространенных в Java — autoboxing — механизме автоматической упаковки примитивных типов в соответствующие объекты-обертки. Приглашаю вас посмотреть на знакомый Java-код не глазами разработчика, а глазами JVM, сборщика мусора и процессора, и разобраться, как незаметные на уровне синтаксиса решения превращаются в аллокации, давление на GC и раздувание heap. Погрузиться

    habr.com/ru/articles/985620/

    #Java #boxing #оптимизация #оптимизация_кода #JVM #Autoboxing #Heap

  29. Осознанная стоимость абстракций: Autoboxing в современной Java

    Мы живём во времена, когда на оперативной памяти для heap Java-приложений почти не экономят, а архитектурные решения, которые ещё недавно можно было назвать расточительными, всё чаще воспринимаются как best practices. Но не все коту масленица. Благодаря AI - буму, облачным вычислениям и микросервисной архитектуре с сотнями одновременно работающих инстансов, мы можем воочию наблюдать неукротимый рост стоимости оперативной памяти, что обязывает вернуться к рассмотрению принципов её экономии. В этих условиях привычные абстракции требуют переоценки. Сегодня я хочу напомнить об одной из самых распространенных в Java — autoboxing — механизме автоматической упаковки примитивных типов в соответствующие объекты-обертки. Приглашаю вас посмотреть на знакомый Java-код не глазами разработчика, а глазами JVM, сборщика мусора и процессора, и разобраться, как незаметные на уровне синтаксиса решения превращаются в аллокации, давление на GC и раздувание heap. Погрузиться

    habr.com/ru/articles/985620/

    #Java #boxing #оптимизация #оптимизация_кода #JVM #Autoboxing #Heap

  30. FastCGo: как мы ускорили вызов C-кода в Go в 16,5 раза

    В Deckhouse Prom++ мы переписали ядро хранения и обработки горячих данных на C++, при этом вся оркестрация и периферия остались в Prometheus на Go, что позволило сохранить полную совместимость с Prometheus. Для частых вызовов кода C++ мы использовали механизм CGo, однако первые тесты показали, что производительность CPU практически не улучшилась из-за его медлительности. В итоге мы переписали CGo, создав собственный механизм вызова. В статье разберём, что такое CGo и почему он такой медленный, сделаем простейший собственный механизм CGo-вызова и доведём этот механизм до полноценного решения.

    habr.com/ru/companies/flant/ar

    #prom++ #fastcgo #cgo #оптимизация_производительности #go #c++ #оптимизация_кода #разработка_по #prometheus #deckhouse

  31. Моё знакомство с процессором Эльбрус-8СВ. Оптимизирую сложение массива байтов

    Месяц назад мне в телеграм написал человек и предложил доступ к системе с процессором Эльбрус-8СВ. И конечно же я согласился. Так как мне интересно. Не каждый день неизвестные люди предлагают доступ к удалённым хостам. Разве может что-то пойти не так?

    habr.com/ru/articles/978730/

    #эльбрус8св #эльбрус #e2k #vliw #simd #интринсики #ассемблер #си #оптимизация_кода

  32. Оптимизация кода 1С и архитектуры вместо покупки железа (конкретная история)

    За 15 лет в разработке и анализе производительности 1С я понял одну простую, но неприятную вещь: когда высоконагруженная система начинает тупить, мы инстинктивно виним платформу, железо или СУБД. Но в реальности, даже на тяжёлых бэкендах с тысячами пользователей, узкое горлышко — это почти всегда наш собственный код. Сегодня я расскажу, как мы построили систему мониторинга своими руками, сэкономили 20% на железе (которого у нас, к слову, не «терабайты и сотни ядер», а вполне вменяемые конфигурации) и почему стандартный APDEX может нагло врать вам в лицо. — Платформа 1С 8.3.24. — СУБД Postgres Pro. — Больше 40 серверов 1С в разных контурах (внутренний для сотрудников, внешний для поставщиков). — В пике — более 4000 пользователей. Ежечасно (!) крутятся тысячи фоновых заданий и сотни интеграционных сценариев.

    habr.com/ru/companies/greenato

    #Рostgres_Pro #ClickHouse #оптимизация_кода #производительность #мониторинг_систем #SQLзапросы #RLS #APDEX

  33. Оптимизация кода 1С и архитектуры вместо покупки железа (конкретная история)

    За 15 лет в разработке и анализе производительности 1С я понял одну простую, но неприятную вещь: когда высоконагруженная система начинает тупить, мы инстинктивно виним платформу, железо или СУБД. Но в реальности, даже на тяжёлых бэкендах с тысячами пользователей, узкое горлышко — это почти всегда наш собственный код. Сегодня я расскажу, как мы построили систему мониторинга своими руками, сэкономили 20% на железе (которого у нас, к слову, не «терабайты и сотни ядер», а вполне вменяемые конфигурации) и почему стандартный APDEX может нагло врать вам в лицо. — Платформа 1С 8.3.24. — СУБД Postgres Pro. — Больше 40 серверов 1С в разных контурах (внутренний для сотрудников, внешний для поставщиков). — В пике — более 4000 пользователей. Ежечасно (!) крутятся тысячи фоновых заданий и сотни интеграционных сценариев.

    habr.com/ru/companies/greenato

    #Рostgres_Pro #ClickHouse #оптимизация_кода #производительность #мониторинг_систем #SQLзапросы #RLS #APDEX

  34. Оптимизация кода 1С и архитектуры вместо покупки железа (конкретная история)

    За 15 лет в разработке и анализе производительности 1С я понял одну простую, но неприятную вещь: когда высоконагруженная система начинает тупить, мы инстинктивно виним платформу, железо или СУБД. Но в реальности, даже на тяжёлых бэкендах с тысячами пользователей, узкое горлышко — это почти всегда наш собственный код. Сегодня я расскажу, как мы построили систему мониторинга своими руками, сэкономили 20% на железе (которого у нас, к слову, не «терабайты и сотни ядер», а вполне вменяемые конфигурации) и почему стандартный APDEX может нагло врать вам в лицо. — Платформа 1С 8.3.24. — СУБД Postgres Pro. — Больше 40 серверов 1С в разных контурах (внутренний для сотрудников, внешний для поставщиков). — В пике — более 4000 пользователей. Ежечасно (!) крутятся тысячи фоновых заданий и сотни интеграционных сценариев.

    habr.com/ru/companies/greenato

    #Рostgres_Pro #ClickHouse #оптимизация_кода #производительность #мониторинг_систем #SQLзапросы #RLS #APDEX

  35. Оптимизация кода 1С и архитектуры вместо покупки железа (конкретная история)

    За 15 лет в разработке и анализе производительности 1С я понял одну простую, но неприятную вещь: когда высоконагруженная система начинает тупить, мы инстинктивно виним платформу, железо или СУБД. Но в реальности, даже на тяжёлых бэкендах с тысячами пользователей, узкое горлышко — это почти всегда наш собственный код. Сегодня я расскажу, как мы построили систему мониторинга своими руками, сэкономили 20% на железе (которого у нас, к слову, не «терабайты и сотни ядер», а вполне вменяемые конфигурации) и почему стандартный APDEX может нагло врать вам в лицо. — Платформа 1С 8.3.24. — СУБД Postgres Pro. — Больше 40 серверов 1С в разных контурах (внутренний для сотрудников, внешний для поставщиков). — В пике — более 4000 пользователей. Ежечасно (!) крутятся тысячи фоновых заданий и сотни интеграционных сценариев.

    habr.com/ru/companies/greenato

    #Рostgres_Pro #ClickHouse #оптимизация_кода #производительность #мониторинг_систем #SQLзапросы #RLS #APDEX

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

  37. Процессор в вашем компьютере угадывает будущее. И ошибается в 5% случаев

    В прошлую пятницу я объяснял джуну, почему его код на отсортированном массиве работает в шесть раз быстрее, чем на неотсортированном. Тот же массив, тот же алгоритм, и те же данные. Просто в другом порядке. Джун смотрел на меня как на сумасшедшего и, честно говоря, я его понимаю. Потому что ответ звучит безумно: процессор внутри вашего ноутбука постоянно пытается предсказать будущее. Буквально. Он гадает, какая ветка if выполнится ещё до того, как условие будет вычислено. И на отсортированных данных ему угадывать проще. Ну, давайте разбираться.

    habr.com/ru/articles/1013098/

    #branch_prediction #предсказание_ветвлений #оптимизация_кода #cpu #производительность #алгоритмы #архитектура_процессоров #spectre #конвейер

  38. [Перевод] Ускоряем работу видеодекодера на 1%

    Какое-то время назад memorysafety.org объявил о конкурсе по повышению производительности rav1d — порта AV1-декодера dav1d на Rust. Моя фамилия Равид, совсем как название декодера, поэтому я решил, что будет забавно попробовать (хоть я и, вероятно , не смогу участвовать в конкурсе). Эта статья посвящена двум найденным мной небольшим улучшениям производительности ( первый PR , второй PR ) и рассказу о том, как я их нашёл.

    habr.com/ru/articles/912136/

    #оптимизация_кода #обработка_видео #декодер #dav1d #rav1d #godbolt

  39. [Перевод] Ускоряем работу видеодекодера на 1%

    Какое-то время назад memorysafety.org объявил о конкурсе по повышению производительности rav1d — порта AV1-декодера dav1d на Rust. Моя фамилия Равид, совсем как название декодера, поэтому я решил, что будет забавно попробовать (хоть я и, вероятно , не смогу участвовать в конкурсе). Эта статья посвящена двум найденным мной небольшим улучшениям производительности ( первый PR , второй PR ) и рассказу о том, как я их нашёл.

    habr.com/ru/articles/912136/

    #оптимизация_кода #обработка_видео #декодер #dav1d #rav1d #godbolt

  40. [Перевод] Ускоряем работу видеодекодера на 1%

    Какое-то время назад memorysafety.org объявил о конкурсе по повышению производительности rav1d — порта AV1-декодера dav1d на Rust. Моя фамилия Равид, совсем как название декодера, поэтому я решил, что будет забавно попробовать (хоть я и, вероятно , не смогу участвовать в конкурсе). Эта статья посвящена двум найденным мной небольшим улучшениям производительности ( первый PR , второй PR ) и рассказу о том, как я их нашёл.

    habr.com/ru/articles/912136/

    #оптимизация_кода #обработка_видео #декодер #dav1d #rav1d #godbolt

  41. [Перевод] Ускоряем работу видеодекодера на 1%

    Какое-то время назад memorysafety.org объявил о конкурсе по повышению производительности rav1d — порта AV1-декодера dav1d на Rust. Моя фамилия Равид, совсем как название декодера, поэтому я решил, что будет забавно попробовать (хоть я и, вероятно , не смогу участвовать в конкурсе). Эта статья посвящена двум найденным мной небольшим улучшениям производительности ( первый PR , второй PR ) и рассказу о том, как я их нашёл.

    habr.com/ru/articles/912136/

    #оптимизация_кода #обработка_видео #декодер #dav1d #rav1d #godbolt

  42. [Перевод] Что будет, если компилятор станет встраивать код по максимуму

    Усаживайтесь поудобнее, ребята! Сегодня мы с вами разберём следующий увлекательный вопрос: что будет, если заинлайнить вообще всё? Если вы пока не знакомы с техникой встраивания (inlining) то примите к сведению, что в сообществе специалистов по разработке компиляторов многие, в том числе очень авторитетные фигуры (например, Чендлер Каррут ) считают этот приём наиважнейшим при оптимизации компиляторов. Подробнее о том, как устроено встраивание, рассказано здесь — мы беззастенчиво хвалимся той презентацией, с которой выступили перед участниками конференции LLVM Developers' Meeting по межпроцедурной оптимизации. Я рассказывал о встраивании и очень рекомендую вам посмотреть хотя бы первые 6 минут. В этом видео я рассказываю, почему встраивание — очень простое преобразование, а вот тут вашему вниманию предлагается реализация встраивания, предложенная великим Крисом Латтнером уже около 20 лет назад — в ней всего около 200 строк кода. К сожалению, сегодня даже само преобразование пропорционально выросло: в качестве примера взгляните хотя бы на InlineFunction.cpp . В вышеупомянутом видео я рассказываю, что у встраивания есть свои недостатки . Иными словами, встраивание позиционируется как супер-пупер инструмент в арсенале компиляторщика, но пользоваться этой штукой следует с осторожностью. И следует ли вообще?

    habr.com/ru/articles/916580/

    #компиляторы #inline #высокая_производительность #с++ #оптимизация_кода

  43. Хеш-таблица и C++20

    Рассматриваем различные «приколюхи» из C++20 на примере хеш‑мапы! В статье я разобрал разные способы реализации тех или иных методов в хеш-мапе, так же провел небольшой анализ над ними. Статья является научно-просветительской и немного исследовательской. Читать далее статьи от @SEIka69

    habr.com/ru/articles/897924/

    #с++20 #hashmap #хештаблица #оптимизация_кода #фичи #stl #stl_containers #задачи_для_программистов #производительность

  44. Анатомия быстрого кода: 15 правил для C++ кода, который не тормозит

    Всем привет! Это продолжение статей про мою ECS with Sectors в моём движке Stellar Forge! В предыдущей статье я описал структуру памяти, что являлось подготовкой фундамента для быстрой итерации, а сейчас хочу рассказать как по этой памяти передвигаться. Получилась общая обзорная статья о том, как заставить C++ код быть быстрее, так что устраивайтесь поудобнее :) Статья будет полезна всем, кто пишет performance-critical код на C++: геймдев, HFT, обработка данных, embedded.

    habr.com/ru/articles/977462/

    #ecs #ecss #оптимизация #оптимизация_кода #геймдев #gamedev #performance

  45. Spring Boot, AspectJ. Введение в аспектно-ориентированное программирование

    Привет, меня зовут Николай Пискунов , я руководитель направления Big Data и автор медиа вАЙТИ . Недавно мне в руки попался старый проект, написанный на Spring Boot. В нем я нашел пару десятков эндпоинтов, в которых метод обрамлен logger. Логирование в таком виде — это важный элемент как для ПО, так и для безопасности, но оно делает код объемнее, его становится сложнее читать. В идеальном случае методы можно сократить буквально до пары строк, но для этого нужно отделить бизнес-логику от остального кода. Сделать это можно с помощью аспектно-ориентированного программирования (AOP) — языка для определения именованного аспекта. О нем и пойдет речь в этой статье.

    habr.com/ru/companies/beeline_

    #spring_boot #aspectj #aop #логирование #backendразработка #разработка_по #архитектура_приложений #инструменты_разработки #оптимизация_кода #производительность

  46. restrict в C: оптимизация на честном слове

    Привет, Хабр! Сегодня поговорим про один из самых незаметных, но любопытных моментов языка C. Если вы пишете на C, скорее всего вы никогда не использовали ключевое слово restrict . А зря — этот квалификатор указателя может дать вашему коду неплохой прирост производительности. Правда, для этого придётся дать компилятору честное слово насчёт своих указателей.

    habr.com/ru/companies/otus/art

    #C #указатели #память #aliasing #оптимизация_кода #lowlevel_программирование #компилятор

  47. 10 лучших расширений VS Code для больших и малых групп, повышающих производительность

    Если вы проводите большую часть дня в Visual Studio Code (как и я), то вы понимаете, что это больше, чем просто редактор кода. Это ваш настоящий командный центр, не меньше. С правильными расширениями VS Code может стать мощным инструментом, который повысит вашу производительность, обеспечит чистый код и даже сделает отладку (почти) безболезненной. Конечно, сейчас кто-то подумает, ну зачем мне нужны эти расширения? Установите, и вы поймете почему. Я собрал 10 расширений VS Code, которыми сам пользуюсь, и которые особенно будут полезны для корпоративных разработчиков, работающих над сложными, совместными и масштабными проектами. Независимо от того, сосредоточены ли вы на написании более чистого кода, раннем выявлении ошибок, оптимизации рабочих процессов Git или совместной работе с удаленными коллегами в режиме реального времени, здесь есть что-то, что сделает вашу жизнь кодирования более гладкой и быстрой.

    habr.com/ru/articles/918286/

    #vs_code #оптимизация_кода

  48. Оптимизация БД начинается в пятницу

    Всем привет, меня зовут Денис Лимарев, я руковожу разработкой в одной из продуктовых команд Uzum Tezkor. В этой статье разберу несколько оптимизаций запросов к БД, которыми наша команда пользуется при разработке своих сервисов, и опишу подход к оптимизациям запросов в целом. В своих проектах мы используем PostgreSQL версии 14.15, поэтому все запросы я проанализировал на ней, и ваши результаты могут отличаться в зависимости от вашей версии.

    habr.com/ru/companies/uzum/art

    #postgresql #postgresql_performance #оптимизация_запросов #оптимизация #оптимизация_кода #uzum #uzumtech

  49. Умножение матриц: пример использования расширения ARM SME2 в Apple M4 Pro

    В конце 2020 года я купил MacBook Pro 13 на процессоре Apple M1, очень хотелось испытать процессоры на архитектуре ARM. Почти сразу на чипе Apple M1 был найден вычислительный блок для матричных операций Apple AMX. Для Apple AMX не было документации, он не использовался в Apple Accelerate , но несколько энтузиастов занимались реверс-инжинирингом и анализом производительности ( " github.com/corsix/amx " ). В 2024 году вышли компьютеры на базе семейства процессоров Apple M4, у которых блок AMX задействован для выполнения инструкций из Scalable Matrix Extension 2 (сайт ARM недоступен в РФ) (ARM SME2). В статье рассмотрим использование расширения ARM SME2 на примере умножения заполненных матриц. Увидим, как выжать максимум из процессора и получить прирост производительности в десятки раз.

    habr.com/ru/articles/1012528/

    #ARM_SME #Apple_M #gemm #умножение_матриц #линейная_алгебра #вычислительные_методы #высокопроизводительные_вычисления #оптимизация_кода #векторные_инструкции #векторные_исчисления

  50. Умножение матриц: пример использования расширения ARM SME2 в Apple M4 Pro

    В конце 2020 года я купил MacBook Pro 13 на процессоре Apple M1, очень хотелось испытать процессоры на архитектуре ARM. Почти сразу на чипе Apple M1 был найден вычислительный блок для матричных операций Apple AMX. Для Apple AMX не было документации, он не использовался в Apple Accelerate , но несколько энтузиастов занимались реверс-инжинирингом и анализом производительности ( " github.com/corsix/amx " ). В 2024 году вышли компьютеры на базе семейства процессоров Apple M4, у которых блок AMX задействован для выполнения инструкций из Scalable Matrix Extension 2 (сайт ARM недоступен в РФ) (ARM SME2). В статье рассмотрим использование расширения ARM SME2 на примере умножения заполненных матриц. Увидим, как выжать максимум из процессора и получить прирост производительности в десятки раз.

    habr.com/ru/articles/1012528/

    #ARM_SME #Apple_M #gemm #умножение_матриц #линейная_алгебра #вычислительные_методы #высокопроизводительные_вычисления #оптимизация_кода #векторные_инструкции #векторные_исчисления