zhub.link is one of the many independent Mastodon servers you can use to participate in the fediverse.

Administered by:

Server stats:

28
active users

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

1 post1 participant0 posts today

PVS-Studio в разработке на Unity: новые специализированные диагностики

По сей день Unity остаётся популярен у тысяч разработчиков. На этом движке созданы многие популярные игры, такие как V Rising, Beat Saber, Hearthstone, Genshin Impact и прочие. Насколько полезен был бы анализатор PVS-Studio разработчикам таких проектов? Какие ошибки и возможности для оптимизации кода он мог бы помочь найти? Давайте узнаем!

habr.com/ru/companies/pvs-stud

#

ХабрPVS-Studio в разработке на Unity: новые специализированные диагностикиПо сей день Unity остаётся популярен у тысяч разработчиков. На этом движке созданы многие популярные игры, такие как V Rising, Beat Saber, Hearthstone, Genshin Impact и прочие. Насколько полезен был...

Современные техники оптимизации производительности в C++. Кэш-локальность, аллокаторы и параллелизм

Как создать быстрый код на C++? Мы будем разбираться в современных техниках оптимизации: кэш-локальности, кастомных аллокаторах и многопоточности. Практические примеры и результаты тестов.

habr.com/ru/articles/876958/

++

ХабрСовременные техники оптимизации производительности в C++. Кэш-локальность, аллокаторы и параллелизмМеня зовут Ибрагим, и я уже много лет занимаюсь программированием на C++. За это время мне довелось поработать с высоконагруженными системами, игровыми движками и даже embedded-проектами! Сегодня я...

Увеличение растровых изображений – какой максимальной схожести с оригиналом мы можем добиться и как? А можно побыстрее?

В этой статье Вы узнаете как теоретические аспекты апскейла сочетаются с практической реализацией, уделяя особое внимание оптимизации алгоритмов на C# для достижения высокой производительности. Рассмотрим сравнительный анализ классических и новых методов, включая нейросетевые подходы, и предложим несколько интересных идей для будущих исследователей. Надеюсь, эта статья станет ценным ресурсом, если вас интересует обработка изображений и повышение эффективности программного кода . Апскейл на пределе: вперёд!

habr.com/ru/articles/872840/

ХабрУвеличение растровых изображений – какой максимальной схожести с оригиналом мы можем добиться и как? А можно побыстрее?Эта статья является третьей из цикла Точное увеличение клип-артов c градиентом и мелкими деталями : #1 ,   #2 В этот раз будет мало новых методов, так как я понял, что изначально поставленная...

Performance и оптимизация TypeScript-типов в больших проектах

Узнайте, почему большие TypeScript-проекты начинают "захлёбываться" от рекурсивных типов и обилия импортов, и как с помощью правильной структуры монорепы, настройки tsconfig и диагностики ускорить время компиляции и работу IDE. Рассматриваем инструменты, параллельную сборку, оптимизацию рекурсивных типов и прочие техники, которые помогут сохранить ваш проект быстрым и удобным.

habr.com/ru/articles/871436/

ХабрPerformance и оптимизация TypeScript-типов в больших проектахPhoto by Carl Heyerdahl on Unsplash Большие TypeScript-проекты на практике чаще всего представляют собой монорепозитории (монорепы), в которых может быть сотни и даже тысячи модулей, интерфейсов и...

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

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

habr.com/ru/companies/beeline_

ХабрSpring Boot, AspectJ. Введение в аспектно-ориентированное программированиеПривет, меня зовут Николай Пискунов , я руководитель направления Big Data и автор медиа вАЙТИ . Недавно мне в руки попался старый проект, написанный на Spring Boot. В нем я нашел пару...

Orbit MVI с сахаром: вкусный фреймворк для однородной архитектуры

Привет, $username! Меня зовут Анастасия, я junior-android-разработчик в МТС Диджитал. Пойдем, расскажу тебе про фреймворк OrbitMVI . Узнала я о нем от своего лида: он делегировал мне задачу заменить наш самодельный Redux на Orbit, чтобы в нашем приложении архитектура стала удобнее и однороднее. Сначала я пошла читать документацию, что из себя представляет Orbit MVI и с чем его едят. Затем попробовала его на небольшом тестовом проекте и поняла: это интересный, удобный и понятный фреймворк. В этом посте я покажу, что в «Орбите» есть полезного и как его можно использовать.

habr.com/ru/companies/ru_mts/a

ХабрOrbit MVI с сахаром: вкусный фреймворк для однородной архитектурыПривет, $username! Меня зовут Анастасия, я junior-android-разработчик в МТС Диджитал. Пойдем, расскажу тебе про фреймворк OrbitMVI . Узнала я о нем от своего лида: он делегировал мне задачу заменить...

[Перевод] Миф о RAM

Миф о RAM — это верование о том, что память современного компьютера напоминает идеальную память с произвольным доступом. Кэш люди считают оптимизацией для малых данных: если они умещаются в L2, то будут обрабатываться быстрее; если нет, то тут уж ничего не поделаешь. Вероятнее всего, что самым быстрым разбиения данных будет такой код (я использую в качестве псевдокода Python; можете представить, что я пишу это на вашем любимом низкоуровневом языке): groups = [[] for _ in range(n_groups)] for element in elements: groups[element.group].append(element) Он и в самом деле линеен (то есть асимптотически оптимален), и мы всё равно должны выполнять доступ к произвольным индексам, так что кэш здесь нам ни в чём бы не помог. В реальности, когда количество групп высоко, такой код не задействует большую часть производительности, а некоторые асимптотически более медленные алгоритмы могут выполнять сегментирование гораздо быстрее. В основном они применяются в базах данных на диске, но, как ни странно, полезны даже в случае данных в RAM.

habr.com/ru/articles/868452/

ХабрМиф о RAMМиф о RAM — это верование о том, что память современного компьютера напоминает идеальную память с произвольным доступом. Кэш люди считают оптимизацией для малых данных: если они умещаются в L2, то...

Оптимизация: типичные ошибки программистов и как их можно исправить

Привет, Хабр. Меня зовут Павел Преблагин, я работаю в команде инжиниринга производительности Positive Technologies. Мы анализируем разные продукты компании и пытаемся так или иначе оптимизировать их изнутри. Как уже можно понять, команда наша мультипроектная: у нас нет постоянной кодовой базы, кроме некоторых инструментов анализа и тестирования. Обычно коллеги из других отделов приносят нам для изучения свою, написанную преимущественно на C++, если у них есть подозрения, что что-то работает не так быстро, как должно было бы. Мы в ответ приносим им результаты замеров, патчи и рекомендации. Хотя наша команда относительно молодая, мы уже успели пройтись по нескольким таким продуктам и нанести непоправимую пользу. Все эти проекты разные и принадлежат разным командам, но мы заметили, что некоторые проблемы встречались в той или иной комбинации везде, носили общий характер, а решались примерно одинаково и порой без серьезных усилий. Цель этой статьи — показать подборку из таких, часто встречаемых, ситуаций вместе с возможными вариантами их решения. Кейсы могут показаться тривиальными или даже глупыми, но факт остается фактом: подобное мы наблюдаем с определенным постоянством и видели в других компаниях, еще до прихода в Позитив. Разобраться

habr.com/ru/companies/pt/artic

ХабрОптимизация: типичные ошибки программистов и как их можно исправить— Are there a lot of these kinds of accidents? — You wouldn't believe. — Which car company do you work for? — A major one. Привет, Хабр. Меня зовут Павел Преблагин, я работаю в команде инжиниринга...

[Перевод] Загадка потерянного инкремента

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

habr.com/ru/articles/864764/

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

[Перевод] Развенчиваем популярные мифы и заблуждения о компиляторах

▍ Введение Компиляторы всегда были окружены аурой загадочности и магии. Из-за этого многие из нас верят, что они делают то, чего они не делают, или что они не делают того, что делают 1 Эта статья станет своего рода продолжением статьи о компиляторных оптимизациях . Я перечислю некоторые заблуждения, с которыми я сталкивался за долгие годы (многие из них были моими), и постараюсь развеять все мифы. Заранее скажу, что эта статья посвящена только крупным популярным компиляторам общего назначения наподобие LLVM, GCC и ICX. Некоторые из сделанных здесь утверждений не относятся, например, к специализированным компиляторам 2 , а также к мелким и средним компиляторам 3 .

habr.com/ru/companies/ruvds/ar

ХабрРазвенчиваем популярные мифы и заблуждения о компиляторах▍ Введение Компиляторы всегда были окружены аурой загадочности и магии. Из-за этого многие из нас верят, что они делают то, чего они не делают, или что они не делают того, что делают 1 Эта статья...
#llvm#clang#gcc

Быстрый однопоточный std::shared_ptr в GCC

Все знают что std::shared_ptr/weak_ptr тормозят, но это не повод от них отказываться и писать свой велосипед или небезопасный код на сырых указателях, ведь ситуацию можно исправить выключив синхронизацию потоков. Код который я вам покажу, работает в GCC и позволяет сконструировать новый shared_ptr без атомарных синхронизаций. Если у вас однопоточное приложение, вы можете подставить этот новый шаред поинтер за место старого для ускорения программы. Ну чё там за код, показывай

habr.com/ru/articles/863944/

++ ++

ХабрБыстрый однопоточный std::shared_ptr в GCCВсе знают что std::shared_ptr/weak_ptr тормозят, но это не повод от них отказываться и писать свой велосипед или небезопасный код на сырых указателях, ведь ситуацию можно исправить выключив...

Меньше JOIN’ов — больше скорость! Или несколько примеров оптимизаций DAX и SQL

Все мы любим ClickHouse, но прекрасно знаем, что у этой СУБД есть свои особенности и ограничения. В этой статье мы поговорим о том, почему нужно избавляться от лишних операторов JOIN, если вы работаете с большими нагрузками, а также оценим, какой эффект дает исключение JOINов, поднятие их на уровень выше, перестановка таблиц местами и некоторые другие хитрые трюки на уровне кода SQL. Всех, кто работает с ClickHouse, а также тех, кто не хочет работать с ClickHouse, но подумывает получить все готовенькое от Visiology, приглашаю под кат!

habr.com/ru/articles/860438/

ХабрМеньше JOIN’ов — больше скорость! Или несколько примеров оптимизаций DAX и SQLВсе мы любим ClickHouse, но прекрасно знаем, что у этой СУБД есть свои особенности и ограничения. В этой статье мы поговорим о том, почему нужно избавляться от лишних операторов JOIN, если вы...
#sql#dax#powerbi

[Перевод] Я прождал 10 миллиардов тактов и дождался лишь экрана загрузки

Современное оборудование невероятно быстрое. M1 Max, на котором я пишу эту статью, работает с частотой 3,2 ГГц. То есть 3,2 МИЛЛИАРДА тактов в секунду . Однако Microsoft Teams требуется 3 секунды, чтобы открыть ссылку, и я отказываюсь верить, что для открытия ссылки требуется 9,6 МИЛЛИАРДА тактов. Очевидно, я упрощаю, но смысл остаётся прежним: как так получается, что оборудование становится быстрее, а приложения — только медленнее? «Потому, что мы выполняем гораздо больше задач». Так считает любитель позднего капитализма . Позвольте объяснить. Превосходный пример мощи современного «железа» — это видеоигры. Я могу симулировать огромные 3D-среды с физикой и освещением, полученным трассировкой лучей, при этом играть в реальном времени с друзьями из других штатов и даже стран; вполне доступный компьютер потребительского уровня выдаёт 124 миллионов пикселей в секунду 1 . [1. 1080p при 60 FPS = 1920 × 1080 × 60 = 124416000] Можно посмотреть и в обратном направлении: людям удаётся запускать DOOM на почти любом устройстве с процессором : на калькуляторах, iPod, фотокамерах. Невероятно маломощные, зачастую одноразовые устройства обладают достаточными вычислительными ресурсами, чтобы выполнять сверхсовременную на 1993 год игру. Это не особо удивляет, ведь прошло три десятка лет, но показывает, какой путь мы проделали.

habr.com/ru/articles/855972/

ХабрЯ прождал 10 миллиардов тактов и дождался лишь экрана загрузкиСовременное оборудование невероятно быстрое. M1 Max, на котором я пишу эту статью, работает с частотой 3,2 ГГц. То есть 3,2 МИЛЛИАРДА тактов в секунду . Однако Microsoft Teams требуется 3...

Во что компилятор C++ превращает код, или ускоряем код безопасно

Привет, Хабр! Меня зовут Алексей Салтыков, я инженер-программист в команде КОМПАС-3D. Решил поделиться соображениями насчет оптимизаций в С++ глазами обычного разработчика. Хочется сразу предупредить, что статья никого ни к чему не призывает. Цель – наглядно показать, как незначительные трансформации кода могут помочь компилятору лучше оптимизировать код и насколько это вообще эффективно.

habr.com/ru/companies/ascon/ar

++

ХабрВо что компилятор C++ превращает код, или ускоряем код безопасноПривет, Хабр! Меня зовут Алексей Салтыков, я инженер-программист в команде КОМПАС-3D. Решил поделиться соображениями насчет оптимизаций в С++ глазами обычного разработчика. Хочется сразу предупредить,...

Авто-трекинг производительности Room Database

Room (абстракция над SQLite) — одна из основных технологий, используемая почти во всех Android-приложениях для кэширования данных, оффлайновости, как cross-process хранилище данных и тому подобное. При этом скорость работы приложения обычно напрямую зависит от скорости работы с БД, особенно если речь идет о холодном старте, когда все данные хранятся в кэше (в БД). Встает вопрос: “ А не является ли сама работа с БД узким местом скорости старта приложения? ” В Wildberries это особенно актуально, так как приложение построено на парадигме offline-first, когда почти вся информация кэшируется в БД, чтобы приложение работало даже с медленным интернетом или без него. Для ответа на этот вопрос в статье разберем рантайм реализацию автоматического трекинга скорости выполнения запросов и транзакций в Room Database.

habr.com/ru/companies/wildberr

ХабрАвто-трекинг производительности Room DatabaseRoom (абстракция над SQLite) — одна из основных технологий, используемая почти во всех Android-приложениях для кэширования данных, оффлайновости, как cross-process хранилище данных и тому...

Как ускорить программу, не переписав ни строчки кода: PGO для Go-разработчиков

Привет, Хабр! Я Кирилл Кузин — старший разработчик компании Ви.Tech, IT-дочки маркетплейса ВсеИнструменты.ру. Мы поддерживаем 4 кластера Kubernetes, каждый из которых включает от 200 до 215 нод. Ежемесячно выполняется более 1 миллиона пайплайнов, а на наш сайт ежедневно заходят до 2 миллионов уникальных пользователей. И в этой статье расскажу о том, как оптимизировать работу сервиса с помощью PGO (Profile-Guided Optimization) - инструмента, изучаемого нашей компанией. На примере кейса разберем, как использование этого инструмента ускоряет выполнение задач и снижает нагрузку на систему. Что делает PGO? Как он влияет на производительность? Мы сравним результаты работы с и без него, а в конце подведем итоги, чтобы дать объективную оценку результатам. Узнать про PGO

habr.com/ru/articles/846818/

ХабрКак ускорить программу, не переписав ни строчки кода: PGO для Go-разработчиковПривет, Хабр! Я Кирилл Кузин — старший разработчик в компании Vi.Tech,являющейся IT-дочкой маркетплейса ВсеИнструменты.ру. Интернет-магазин стремительно растет и развивается. И сейчас мы имеем 4...

Вам не нужен UUID

Привет, меня зовут Андрей Богомолов, я Android-разработчик в команде Performance приложения Wildberries. Однажды, работая с кодом, я обратил внимание на использование UUID в UI и задумался об его влиянии на производительность. Тесты показали, что стандартная реализация UUID в Java может стать узким местом на экранах с высоким DAU и в часто используемых компонентах. В этой статье мы рассмотрим разные подходы к генерации уникальных идентификаторов, сравним их производительность и напишем своё оптимизированное решение для мобильных приложений.

habr.com/ru/companies/wildberr

ХабрВам не нужен UUIDПривет, меня зовут Андрей Богомолов, я Android-разработчик в команде Performance приложения Wildberries.  Однажды, работая с кодом, я обратил внимание на использование UUID в UI и задумался о его...
#uuid#kotlin#java

Работа с большими файлами в Python

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

habr.com/ru/articles/842792/

ХабрРабота с большими файлами в PythonВ этой статье мы рассмотрим, как эффективно читать большие текстовые файлы с минимальным использованием памяти в Python. Мы начнем с обзора наиболее распространенных методов и затем перейдем к...

[Перевод] Factorio: оптимизации 2.0

Все мы любим строить всё больше и больше, поэтому когда сталкиваешься с ограничением UPS, это сильно расстраивает. Именно поэтому мы обязаны продолжать свой бесконечный процесс оптимизации игры. ▍ Оптимизация роботов (автор: Rseding) За годы работы над Factorio я профилировал множество файлов сохранений и регулярно встречал сохранёнки, где большая часть времени обновления тратится на логистику и/или строительных дронов. В этом нет ничего нового, но наряду с дронами существуют и дронстанции (в больших количествах). Типичная фабрика с кучей дронстанций (Roboport) Дронстанции никогда не были «медленными», но они всегда присутствуют на карте, и у игроков есть мотивация строить их в больших количествах; к тому же, их будет ещё больше в грядущем Space Age, где нужно будет многое делать удалённо. Сохранение, полученное после последней сессии плейтестинга, снова показало, что они отнимают небольшое, но ненулевое количество времени, поэтому я снова задумался о них.

habr.com/ru/companies/ruvds/ar

ХабрFactorio: оптимизации 2.0Все мы любим строить всё больше и больше, поэтому когда сталкиваешься с ограничением UPS, это сильно расстраивает. Именно поэтому мы обязаны продолжать свой бесконечный процесс оптимизации игры. ▍...