Библиотека C/C++ разработчика
7.22K subscribers
688 photos
720 videos
8 files
986 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Сегментация памяти в программе на C/C++

#cpp #programming

👉 @cpp_lib
👍164
FastCGo: как мы ускорили вызов C-кода в Go в 16,5 раза

Всем привет! Меня зовут Владимир Пустовалов, я C++ разработчик в команде Deckhouse компании «Флант». Мои коллеги — DevOps-инженеры — на данный момент обслуживают более 600 кластеров, и, естественно, в каждом из них развёрнута система мониторинга.

Изначально мы использовали Prometheus — опенсорсную систему мониторинга, написанную на Go. По нашей статистике, она занимала около 20 % ресурсов каждого кластера. Мы не могли с этим мириться и поэтому разработали проект под названием Prom++, в котором многократно сократили потребление оперативной памяти и снизили нагрузку на центральный процессор.

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

Что будет в этой статье:
Разберём, что такое CGo и почему он медленный.
Создадим простой собственный механизм CGo-вызова.
Доведём этот механизм до полноценного решения.

https://habr.com/ru/companies/flant/articles/923912/

#cpp #programming

👉 @cpp_lib
4👍1
Trip report: June 2025 ISO C++ standards meeting (Sofia, Bulgaria)

Сегодня — поворотный момент в истории C++: всего несколько минут назад комитет по стандартизации C++ проголосовал за включение первых семи документов по отражению во время компиляции (compile-time reflection) в черновик стандарта C++26 — под продолжительные аплодисменты в зале. Думаю, лучше всего значение этой функции выразила Хана «Мисс Констэкспр» Дусикова несколько дней назад, в своей привычной спокойной и невозмутимой манере... когда ей сказали, что документ по reflection попадёт на голосование в субботу, она слегка пожала плечами и тихо сказала: «Совершенно новый язык».


https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meeting-sofia-bulgaria/

статья от 2025-06-21

#cpp #programming

👉 @cpp_lib
👍93
Media is too big
VIEW IN TELEGRAM
Запись System Level MeetUp. Поток C++

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

00:00 - Открытие мероприятия.
08:30 - Доклад "Девиртуализация в C++, компиляторах и вашей программе" (Константин Владимиров и Илья Андреев).
47:50 - Вопросы от участников.
01:00:32 - Доклад "Кодек для json'ов с фиксированной схемой" (Никита Пешаков).
01:27:33 - Вопросы от участников.
01:43:04 - Дискуссия "Как писать меньше на C++?" (Константин Владимиров, Илья Казаков, Алексей Щербаков, Василий Рамаданов).
02:43:06 - Доклад "Реализация динамического полиморфизма для свободных функций" (Кирилл Колодяжный).
03:00:56 - Вопросы участников.
03:11:00 - Доклад "Шаблонное мета-программирование в современном C++ для задач космической баллистики" (Леонид Меркин).
03:59:32 - Вопросы участников.
04:06:05 - Доклад "C++ внутри PostgreSQL: удобство против традиций" (Илья Шишков).
04:46:55 - Вопросы участников.

источник

#cpp #programming

👉 @cpp_lib
11👍3
Почему C++ считает мой класс копируемым, если его нельзя скопировать?

Рассмотрим следующий сценарий:


template<typename T>
struct Base
{
// Есть конструктор по умолчанию
Base() = default;

// Не копируемый
Base(Base const &) = delete;
};

template<typename T>
struct Derived : Base<T>
{
Derived() = default;
Derived(Derived const& d) : Base<T>(d) {}
};

// Это assertion выполняется?
static_assert(
std::is_copy_constructible_v<Derived<int>>);


Почему выполняется это assertion? Очевидно, что скопировать Derived<int> нельзя, ведь при этом мы попытаемся скопировать некопируемый Base<int>. И в самом деле, если попробовать скопировать его, то мы получим ошибку:


void example(Derived<int>& d)
{
Derived<int> d2(d);
// msvc: error C2280: 'Base<T>::Base(const Base<T> &)':
// attempting to reference a deleted function
// gcc: error: use of deleted function 'Base<T>::Base(const Base<T>&)
// [with T = int]'
// clang: error: call to deleted constructor of 'Base<int>'
}

Итак, компилятор считает, что Derived<int> копируемый, но когда мы пытаемся его скопировать, выясняется, что это не так!

https://habr.com/ru/articles/920202/

#cpp #programming

👉 @cpp_lib
👍2🔥2
Media is too big
VIEW IN TELEGRAM
17 июля в 19:00 (Мск) приглашаем на онлайн-встречу,посвященную профессиональному развитию в сфере разработки электронных устройств.

Наша Академия программирования электронных устройств занимается повышением квалификации инженеров-радиоэлектронщиков.

На встрече обсудим:
- Кто занимается разработкой электронных устройств сегодня
- Самые востребованные направления в отрасли
- Актуальные возможности для профессионального старта
- Разные форматы работы в этой сфере

Также у вас будет возможность:
- Получить ответы на свои вопросы от эксперта
- Познакомиться с программами дополнительного профессионального образования в этой сфере

Регистрируйтесь прямо сейчас – количество мест ограничено!

После регистрации Вам придет бонус - "Принципы работы радиоэлектронщиков"

Ждем Вас!
👍4🔥21
🦀 Хотите стать Middle Rust-разработчиком?

Присоединяйтесь к открытому уроку «Техническое собеседование на Middle Rust разработчика» 24 июля в 20:00 МСК. В режиме онлайн разберем:

— Типичные вопросы, которые вам зададут на собеседовании.

— Задачи, которые дают кандидатам на уровне Middle.

— Частые ошибки на собеседованиях и способы их избежать.

❗️Этот урок — отличная подготовка к карьерному росту в разработке.

👉 Записаться на вебинар курса «Rust Developer. Professional»https://vk.cc/cNKKqz

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍1
Эффективное использование С++

Лекция 1. Библиотеки, утилиты, средства разработки, сборка (Эффективное использование С++)
Лекция 2. Работа с памятью. Утечки ресурсов. RAII, умные указатели (Эффективное использование С++)
Лекция 3. Move semantics, rvalue reference, perfect forwarding.
Лекция 4. Callbacks: lambda, bind & function.
Лекция 5. Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений)
Лекция 6. Обзор возможностей современных стандартов C++

источник

#cpp #programming

👉 @cpp_lib
👍86