🍖 Как сократить бинарный код и не потерять нужную функциональность
В статье подробно показывают, как оптимизировать бинарный код C++-проекта, чтобы не потерять нужную функциональность, используя только сборочные флаги, правильную работу с шаблонами и альтернативы стандартным инструментам.
📕 Ключевые моменты статьи:
• грамотное применение флагов компилятора и линковки для сокращения бинаря
• замена
• уход от
Основной фокус — практические сценарии уменьшения итогового бинарного файла: что реально помогает, а от чего лучше отказаться, если не хотите усложнять архитектуру, ломать исключения и убирать RTTI.
👉 Статья
Библиотека C/C++ разработчика
#буст
В статье подробно показывают, как оптимизировать бинарный код C++-проекта, чтобы не потерять нужную функциональность, используя только сборочные флаги, правильную работу с шаблонами и альтернативы стандартным инструментам.
📕 Ключевые моменты статьи:
• грамотное применение флагов компилятора и линковки для сокращения бинаря
• замена
std::visit и std::variant на более экономичные паттерны• уход от
std::shared_ptr к unique_ptr ради уменьшения инстанциаций и поддержки чисто-сырого владенияОсновной фокус — практические сценарии уменьшения итогового бинарного файла: что реально помогает, а от чего лучше отказаться, если не хотите усложнять архитектуру, ломать исключения и убирать RTTI.
👉 Статья
Библиотека C/C++ разработчика
#буст
👍2
STL позволяет полностью контролировать аллокацию памяти через allocators.
✓ Pool allocators для объектов одного размера (быстрее malloc)
✓ Stack allocators для временных данных без обращения к куче
✓ Tracking allocators для профилирования утечек памяти
✓ Aligned allocators для SIMD-оптимизированных структур
✓ std::allocator — дефолтный, работает через new/delete
✓ std::pmr::monotonic_buffer_resource — аллокация из буфера
✓ std::pmr::unsynchronized_pool_resource для многократного переиспользования
✓ std::pmr::polymorphic_allocator для динамической смены стратегии
✓ Реализуй allocate() и deallocate()
✓ Объяви value_type, size_type, difference_type
✓ Не забудь про rebind для типов внутри контейнера
✓ Сделай allocator stateless для оптимизаций
Сравни количество malloc-вызовов через profiler до и после внедрения кастомного allocator. Цель — уменьшить на 50%+.
В game dev кастомные allocators — стандарт. Они значительно ускоряют аллокацию по сравнению с malloc.
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
🎃 Хэллоуин в Proglib Academy: скидки, призы и... немного паники
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
🌚2😁1
🍖 «Я хочу 500 000 рублей» и еще 8 способов договориться о зарплате
Представь: ты на собеседовании мечты, и тут HR спрашивает про зарплату. Что скажешь? Называешь число первым или ждешь? Завышаешь или играешь честно? Мы собрали 9 работающих стратегий с конкретными примерами фраз — от «Открытой» до «Я никуда не тороплюсь». Выбирай свою и перестань продавать себя дешево.
👉 Статья
Представь: ты на собеседовании мечты, и тут HR спрашивает про зарплату. Что скажешь? Называешь число первым или ждешь? Завышаешь или играешь честно? Мы собрали 9 работающих стратегий с конкретными примерами фраз — от «Открытой» до «Я никуда не тороплюсь». Выбирай свою и перестань продавать себя дешево.
👉 Статья
👍3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Наконец-то неделя закончилась, можно расслабиться и послушать шансончика😎
Библиотека C/C++ разработчика
#развлекалово
Библиотека C/C++ разработчика
#развлекалово
😁13👾3❤1
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🍖 Какую тему будем разбирать на этой неделе?
Anonymous Poll
36%
Сети
24%
Алгоритмы с собеседований
16%
STL
17%
Оптимизация кода
6%
Всё что угодно только не UB
😁2
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
🍖 Интересное:
• Красивое резюме = провал — статья о том почему могут игнорировать пезюме, даже если оно хорошее
• «Я хочу 500 000 рублей» и еще 8 способов договориться о зарплате — полезные рекомендации о том как просить зарплату повыше
😎 Полезное:
• std::partition — функция помогающая разделять данные по условию
• Как сократить бинарный код и не потерять нужную функциональность — статья об оптимизации кода с помощью флагов сборки
• Алокаторы — чек-лист о том какие есть аллокаторы в C++
🔥 Интересные проекты:
• cpp-httplib — кроссплатформенная HTTP/HTTPS-библиотека C++11, содержащая только заголовочные файлы
• Perfetto — набор SDK, демонов и инструментов с открытым исходным кодом, которые помогают реализовывать трассировку и профилирование
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
🍖 Интересное:
• Красивое резюме = провал — статья о том почему могут игнорировать пезюме, даже если оно хорошее
• «Я хочу 500 000 рублей» и еще 8 способов договориться о зарплате — полезные рекомендации о том как просить зарплату повыше
😎 Полезное:
• std::partition — функция помогающая разделять данные по условию
• Как сократить бинарный код и не потерять нужную функциональность — статья об оптимизации кода с помощью флагов сборки
• Алокаторы — чек-лист о том какие есть аллокаторы в C++
🔥 Интересные проекты:
• cpp-httplib — кроссплатформенная HTTP/HTTPS-библиотека C++11, содержащая только заголовочные файлы
• Perfetto — набор SDK, демонов и инструментов с открытым исходным кодом, которые помогают реализовывать трассировку и профилирование
Библиотека C/C++ разработчика
#свежак
❤4👍1
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Сколько TCP пакетов будет отправлено (без задержек на приёмной стороне)?
Anonymous Quiz
18%
1 (все данные в одном пакете)
9%
Около 10-20 (группировка по таймеру)
38%
100 (каждый байт в отдельном пакете)
17%
Зависит от MTU
18%
Зависит от размера TCP window
😁2
Forwarded from Библиотека Go-разработчика | Golang
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9
Какое преимущество даёт connect() для UDP сокета?
Anonymous Quiz
10%
Устанавливается надёжное соединение
33%
Ядро кеширует маршрут, меньше overhead на каждый send()
5%
Автоматическая ретрансмиссия потерянных пакетов
47%
Невозможно, connect() работает только с TCP
5%
Включается контроль порядка доставки
😁1
🐸 Подборка вакансий для C++-разработчиков за неделю
C developer — Удалёнка
Middle+ / Senior C++ developer — Удалёнка
Senior разработчик C++ в команду Core — Удалёнка
Middle Разработчик на C/C++ под Linux — от 250 000 и до 300 000 ₽ Удалёнка
Библиотека C/C++ разработчика
C developer — Удалёнка
Middle+ / Senior C++ developer — Удалёнка
Senior разработчик C++ в команду Core — Удалёнка
Middle Разработчик на C/C++ под Linux — от 250 000 и до 300 000 ₽ Удалёнка
Библиотека C/C++ разработчика
👍2
Часто в коде встречаются избыточные проверки, которые защищают от "невозможных" ситуаций:
void process(Config* config) {
if (config == nullptr) { // хотя config всегда валиден!
log_error("Config is null");
return;
}
// ...
}assert для проверки инвариантов — условий, которые всегда должны выполняться в корректной программе:void process(Config* config) {
assert(config != nullptr && "Config cannot be null");
// ...
}• В релизе (NDEBUG) код assert полностью удаляется — нет накладных расходов
• В горячих циклах это может означать миллионы сэкономленных проверок
• Меньше размер исполняемого файла
• assert явно документирует предусловия функции
• Баг обнаруживается сразу в
Debug, а не прячется за логами👉 Статья
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤔2🥱1👾1