Блог C++ → Полезные материалы по С++ | OTUS
Сделайте «снимок» кода С++, посмотрим что у вас!

С___Deep_9-5020-7511bd.10_site.png

Современный C++ породил странный страх сделать что-то недостаточно эффективно. По этой причине в коде часто можно встретить std::move совершенно не к месту. Или какие-то сложные телодвижения, нацеленные на избавление от копирования возвращаемого значения.

Иногда кажется, что это для многих стало чем-то вроде фобии. А-а-а-а, я тут лишнего скопировал! И пропал на час, придумывая как избавиться от него.

Копилка с дыркой: что такое опыт и стоит ли хранить всё?

Cplus_Deep_11.3_site-5020-6776fc.png

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

Как распределяется вычислительный объём на ядрах?

C___Deep_24.5_site-5020-8af3aa.png

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

Подводные камни внедрения глобальной HRMS-системы

С++Deep20.04_SITE_4.png

Несколько лет назад в одном крупном российском банке, в котором на тот момент было больше 50 офисов по всей стране, возникла задача внедрения глобальной HRMS-системы на базе Oracle e-Business Suite (далее OeBS).

Примечание: в OeBS входит больше 200 модулей. Кроме HRMS есть ешё финансы, логистика и др. Но в данном случае OeBS мы использовали только как HRMS.

В качестве пилота была внедрена OeBS-система в штаб-квартире московского офиса. Затем нужно было подключить 50+ филиалов в данную HMRS-систему, т.е. загрузить кадровые данные из всех филиалов в OeBS.

Модификаторы virtual

VKС++Deep4_21.06_SITE_3.png

Делюсь с вами рассказом своего коллеги - разработчика С++. Уверен, информация пригодится вам в проектах!

Наконец-то пришёл долгожданный SDK от компании-партнёра. Проблем с интеграцией в наш проект не возникло. Началась работа над имплементацией на нашей стороне.

Собственно говоря, всё представлялось исключительно чётким и ясным: мы наследуем базовый класс из SDK нашего партнёра, имплементируем необходимые интерфейсные методы, добавляем свои... Работа заняла пару-тройку дней. Настало время тестирования.

С++17: новые возможности

VKС++Deep5_21.06_SITE_2.png

Стандарт языка С++17 был принят относительно недавно – в декабре 2017 года. Тем не менее, уже как минимум два компилятора под Linux его поддерживают:

g++, начиная с версии 7.1; – clang, начиная с версии 5.

Список нововведений со времени предыдущего стандарта C++14 довольно велик. Посмотреть можно, например, Bartek's C++17 features list. В этой заметке остановимся всего на двух чертах, которые оказались полезными и удобными в практическом плане на конкретных примерах.

Виды памяти

VKС++Deep_21.06_Site.png

Многие программисты, занимающиеся разработкой программ с использованием компилируемых языков программирования, часто не задумываются о том, как происходит работа с памятью в их программах, где хранятся данные и в момент их инициализации, где хранится исполняемый код. Попытаемся суммировать знания о типах памяти и объяснить, что где хранится.

Введение в Boost.Asio

VKС++Deep2.png

Asio означает asynchronous input/output – асинхронный ввод-вывод. Данная библиотека позволяет обрабатывать данные асинхронно, т.е. операция может быть запущена, и, не дожидаясь конца выполнения этой операции, мы можем запустить другую операцию.

Asio оповещает об окончании выполнения операции. Преимущество – операции могут быть запущены параллельно, т.е. мы выигрываем в производительности.

Зачем что-то обещать или почему noexcept меняет поведение кода?

С++Deep_14.06_SITE.png

Если бы по телевизору показывали рекламу языка C++, наверняка, в ней бы было что-то вроде:

«С добавлением move-семантики вы получаете бесплатное увеличение производительности за счёт избавления от нецелесообразных операций копирования. Просто перекомпилируйте свой проект новой версией компилятора с поддержкой 11 или 14 стандарта и радуйтесь ускорению работы программы!».

Стоит ли верить такой рекламе?

Популярное
Сегодня тут пусто