[MUC++] Elizaveta Shulankina - Analyzing C++ applications for performance optimization
Some of us, willingly or not, have needed to analyze the code for performance improvements. Of course, we resorted to various code profilers to figure out what was wrong with our perfectly written code... And more often than not, the profiler surprised us by pointing out a performance bottleneck in the code!
This talk will be an introduction to C++ application performance optimization using tools such as Intel VTune Profiler and Intel Advisor. We will briefly walk through the performance optimization steps, then take a small C++ application and ask VTune and Advisor to help us understand what is going on, what the performance bottlenecks are and how we can deal with them to make our application memory and compute efficient. We will do a few iterations of tuning this C++ application and see how it speeds up.
https://www.youtube.com/watch?v=M1D8iez1Ph0
#cpp #programming
👉 @cpp_lib
Some of us, willingly or not, have needed to analyze the code for performance improvements. Of course, we resorted to various code profilers to figure out what was wrong with our perfectly written code... And more often than not, the profiler surprised us by pointing out a performance bottleneck in the code!
This talk will be an introduction to C++ application performance optimization using tools such as Intel VTune Profiler and Intel Advisor. We will briefly walk through the performance optimization steps, then take a small C++ application and ask VTune and Advisor to help us understand what is going on, what the performance bottlenecks are and how we can deal with them to make our application memory and compute efficient. We will do a few iterations of tuning this C++ application and see how it speeds up.
https://www.youtube.com/watch?v=M1D8iez1Ph0
#cpp #programming
👉 @cpp_lib
YouTube
[MUC++] Elizaveta Shulankina - Analyzing C++ applications for performance optimization
Some of us, willingly or not, have needed to analyze the code for performance improvements. Of course, we resorted to various code profilers to figure out what was wrong with our perfectly written code... And more often than not, the profiler surprised us…
👍3
Media is too big
VIEW IN TELEGRAM
Перепрограммирование мозга с помощью test driven в C++ - Фил Нэш - Meeting C++ 2023
Мы все говорим, что должны писать тесты, или, по крайней мере, должны писать их больше.
Но, похоже, у нас никогда нет времени, и наше внимание сосредоточено на реальных проблемах, которые мы пытаемся решить. Никто не хочет быть замотанным работой.
А что, если все это не так?
Что, если бы тесты могли сэкономить ваше время, улучшить вашу сосредоточенность - и даже доставить удовольствие!
В этой беседе мы рассмотрим некоторые психологические особенности того, как мы работаем, как мы совершенствуемся и как мы можем использовать подход, основанный на тестировании, чтобы повысить нашу производительность!
источник
#cpp #programming
👉 @cpp_lib
Мы все говорим, что должны писать тесты, или, по крайней мере, должны писать их больше.
Но, похоже, у нас никогда нет времени, и наше внимание сосредоточено на реальных проблемах, которые мы пытаемся решить. Никто не хочет быть замотанным работой.
А что, если все это не так?
Что, если бы тесты могли сэкономить ваше время, улучшить вашу сосредоточенность - и даже доставить удовольствие!
В этой беседе мы рассмотрим некоторые психологические особенности того, как мы работаем, как мы совершенствуемся и как мы можем использовать подход, основанный на тестировании, чтобы повысить нашу производительность!
источник
#cpp #programming
👉 @cpp_lib
⚡1👍1
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Базовый курс C++ (MIPT, ILab)
Lecture 1. Scent of C++.
Lecture 2. Указатели и ссылки
Lecture 3. Имена и сущности
Lecture 4. Инициализация и копирование.
Lecture 5. RAII и перемещение
Lecture 6. Приведение типов
Lecture 7. Перегрузка операторов
Lecture 8. Наследование и полиморфизм
Lecture 9. Множественное наследование
Lecture 10. Языки и грамматики
источник
#cpp #programming
👉 @cpp_lib
Lecture 1. Scent of C++.
Lecture 2. Указатели и ссылки
Lecture 3. Имена и сущности
Lecture 4. Инициализация и копирование.
Lecture 5. RAII и перемещение
Lecture 6. Приведение типов
Lecture 7. Перегрузка операторов
Lecture 8. Наследование и полиморфизм
Lecture 9. Множественное наследование
Lecture 10. Языки и грамматики
источник
#cpp #programming
👉 @cpp_lib
❤10👍3
Подборка полезных ресурсов для изучения C++
💡 LearnCpp.com — это бесплатный веб-сайт, посвященный обучению вас программированию на C++. Независимо от того, был ли у вас какой-либо предыдущий опыт программирования или нет, учебные пособия на этом сайте помогут вам выполнить все шаги по написанию, компиляции и отладке ваших программ на C++, и все это с большим количеством примеров.
💡 ravesli.com — Здесь представлены более 240 бесплатных уроков, где с нуля рассматриваются основы и тонкости языка С++ и программирования в целом. Есть пошаговые создания игр на С++ с помощью библиотек MFC и SFML, и более 70 практических заданий для проверки ваших навыков программирования.
💡 metanit.com — данный сайт посвящен различным языкам и технологиям программирования, компьютерам, мобильным платформам и ИТ-технологиям. Здесь будут выкладываться различные руководства и учебные материалы, статьи и примеры.
💡 cppstudio.com/cat/274/ — Если вы новичок в C++, предлагаю Вам прочитать этот бесплатный учебник. Здесь собрано большое количество статей для начинающих программистов по С++. Условно все статьи разделены на группы, кратко характеризующие их содержание. После прочтения статьи, можно закрепить материал, написав несколько программ. Для проверки своих теоретических знаний можно пройти тестирование по С++. В таблице после теоретических статей идет подраздел практики, в котором вы можете пройти тестирование и написать программы.
💡 cplusplus.com/doc/tutorial/ — These tutorials explain the C++ language from its basics up to the newest features introduced by C++11. Chapters have a practical orientation, with example programs in all sections to start practicing what is being explained right away.
💡 devdocs.io/cpp/ — The interface of C++ standard library is defined by the following collection of headers.
💡 https://en.cppreference.com/w/cpp — ещё одна хорошая документация на английском. Постоянно обновляется.
💡 https://learnc.info/ — хороший сайт с лекциями по языку C. В качестве базового языка вам предстоит изучать C. Почему именно C, а не Pascal, Python, Ruby или PHP? Этот язык заставляет вас думать обо всём. Когда программируешь на си, начинаешь понимать, что компьютер - просто железяка. Необходимо самостоятельно выделять память под объекты, затем очищать эту память, заботиться о переполнении массивов, переполнении переменных, изменении знака переменных, приведении типов, правильном обращении к памяти и т.д.
#cpp #programming
👉 @cpp_lib
💡 LearnCpp.com — это бесплатный веб-сайт, посвященный обучению вас программированию на C++. Независимо от того, был ли у вас какой-либо предыдущий опыт программирования или нет, учебные пособия на этом сайте помогут вам выполнить все шаги по написанию, компиляции и отладке ваших программ на C++, и все это с большим количеством примеров.
💡 ravesli.com — Здесь представлены более 240 бесплатных уроков, где с нуля рассматриваются основы и тонкости языка С++ и программирования в целом. Есть пошаговые создания игр на С++ с помощью библиотек MFC и SFML, и более 70 практических заданий для проверки ваших навыков программирования.
💡 metanit.com — данный сайт посвящен различным языкам и технологиям программирования, компьютерам, мобильным платформам и ИТ-технологиям. Здесь будут выкладываться различные руководства и учебные материалы, статьи и примеры.
💡 cppstudio.com/cat/274/ — Если вы новичок в C++, предлагаю Вам прочитать этот бесплатный учебник. Здесь собрано большое количество статей для начинающих программистов по С++. Условно все статьи разделены на группы, кратко характеризующие их содержание. После прочтения статьи, можно закрепить материал, написав несколько программ. Для проверки своих теоретических знаний можно пройти тестирование по С++. В таблице после теоретических статей идет подраздел практики, в котором вы можете пройти тестирование и написать программы.
💡 cplusplus.com/doc/tutorial/ — These tutorials explain the C++ language from its basics up to the newest features introduced by C++11. Chapters have a practical orientation, with example programs in all sections to start practicing what is being explained right away.
💡 devdocs.io/cpp/ — The interface of C++ standard library is defined by the following collection of headers.
💡 https://en.cppreference.com/w/cpp — ещё одна хорошая документация на английском. Постоянно обновляется.
💡 https://learnc.info/ — хороший сайт с лекциями по языку C. В качестве базового языка вам предстоит изучать C. Почему именно C, а не Pascal, Python, Ruby или PHP? Этот язык заставляет вас думать обо всём. Когда программируешь на си, начинаешь понимать, что компьютер - просто железяка. Необходимо самостоятельно выделять память под объекты, затем очищать эту память, заботиться о переполнении массивов, переполнении переменных, изменении знака переменных, приведении типов, правильном обращении к памяти и т.д.
#cpp #programming
👉 @cpp_lib
🔥6⚡1👍1
Sourav Ghosh (2023)
Develop a complete low latency trading ecosystem from scratch using modern C++. C++ is meticulously designed with efficiency, performance, and flexibility as its core objectives. However, real-time low latency applications demand a distinct set of requirements, particularly in terms of performance latencies.
C++ is meticulously designed with efficiency, performance, and flexibility as its core objectives. However, real-time low latency applications demand a distinct set of requirements, particularly in terms of performance latencies.
With this book, you’ll gain insights into the performance requirements for low latency applications and the C++ features critical to achieving the required performance latencies. You’ll also solidify your understanding of the C++ principles and techniques as you build a low latency system in C++ from scratch.
You’ll understand the similarities between such applications, recognize the impact of performance latencies on business, and grasp the reasons behind the extensive efforts invested in minimizing latencies. Using a step-by-step approach, you’ll embark on a low latency app development journey by building an entire electronic trading system, encompassing a matching engine, market data handlers, order gateways, and trading algorithms, all in C++. Additionally, you’ll get to grips with measuring and optimizing the performance of your trading system.
By the end of this book, you’ll have a comprehensive understanding of how to design and build low latency applications in C++ from the ground up, while effectively minimizing performance latencies.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4⚡1
Media is too big
VIEW IN TELEGRAM
Семантические процессы в C++
Константин Владимиров
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам. Этот доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка.
источник
#cpp #programming
👉 @cpp_lib
Константин Владимиров
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам. Этот доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка.
источник
#cpp #programming
👉 @cpp_lib
👍4⚡3
Вы все еще пишете многопоточку на C++ с ошибками синхронизации?
Привет, коллеги! В этой статье я покажу свой подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации.
Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS).
https://habr.com/ru/companies/kaspersky/articles/805365/
#cpp #programming
👉 @cpp_lib
Привет, коллеги! В этой статье я покажу свой подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации.
Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS).
https://habr.com/ru/companies/kaspersky/articles/805365/
#cpp #programming
👉 @cpp_lib
Хабр
Вы все еще пишете многопоточку на C++ с ошибками синхронизации?
Привет, коллеги! В этой статье я покажу свой подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации. Демонстрация...
👍6❤2🥱1
Дерево отрезков
Всем привет. В этой статье я расскажу про дерево отрезков. Дерево отрезков - это очень мощная структура данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика, разреженные таблицы.
https://habr.com/ru/articles/808511/
#cpp #programming
👉 @cpp_lib
Всем привет. В этой статье я расскажу про дерево отрезков. Дерево отрезков - это очень мощная структура данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика, разреженные таблицы.
https://habr.com/ru/articles/808511/
#cpp #programming
👉 @cpp_lib
👍3⚡1
std::exception
— это базовый класс для всех стандартных исключений в C++Почему стоит наследоваться от std::exception?
• Единообразие в обработке исключений: Когда вы наследуетесь от
std::exception
, ваш класс исключения приобретает интерфейс, который делает его совместимым с другими стандартными исключениями•
what()
метод: std::exception
предоставляет важный метод what()
, который возвращает строковое представление исключения. Это позволяет вам предоставлять информативные сообщения об ошибке при обработке исключений• Легкость в поддержке кода: Если вы используете сторонние библиотеки или фреймворки, они также могут ожидать обработку исключений, производных от
std::exception
• Стандартные типы исключений:
std::exception
имеет несколько стандартных подклассов, таких как std::runtime_error
, std::logic_error
и другие. Вы можете использовать эти подклассы вместо базового std::exception
, чтобы более точно определить характер ошибки#cpp #programming
👉 @cpp_lib
👍11⚡2🔥1
C++. Ограничение noexcept
Реализация обобщенного кода C++ может быть сложной, поскольку любая операция потенциально может выкинуть исключение.
Примечательно, что, когда требуется строгая гарантия исключений, это может значительно усложнить код и привести к накладным расходам во время выполнения (или даже к изменению сложности «O большого»).
К счастью, для обеспечения соблюдения гарантий noexcept во время компиляции концепты можно использовать C++20.
https://medium.com/@simontoth/daily-bit-e-of-c-constraining-on-noexcept-fe477cc2bbe1
#cpp #programming
👉 @cpp_lib
Реализация обобщенного кода C++ может быть сложной, поскольку любая операция потенциально может выкинуть исключение.
Примечательно, что, когда требуется строгая гарантия исключений, это может значительно усложнить код и привести к накладным расходам во время выполнения (или даже к изменению сложности «O большого»).
К счастью, для обеспечения соблюдения гарантий noexcept во время компиляции концепты можно использовать C++20.
#include <utility>
struct UnsafeType
{
UnsafeType() = default;
UnsafeType(UnsafeType&&) {}
UnsafeType& operator=(UnsafeType&&) { return *this; }
};
template <typename T>
void unsafe_swap(T& left, T& right)
{
auto tmp = std::move(left);
left = std::move(right); // Что будет, если этот move выкинет исключение?
// было выполнено перемещение значения из left,
// и перемещение этого значения в right снова может выкинуть исключение
right = std::move(tmp);
}
struct SafeType
{
SafeType() = default;
SafeType(SafeType&&) noexcept {}
SafeType& operator=(SafeType&&) noexcept { return *this; }
};
template <typename T>
requires requires (T& a, T& b)
{
// присваивание перемещением допустимо и не выкидывает исключение
{ a = std::move(b) } noexcept;
}
void safe_swap(T& left, T& right)
{
auto tmp = std::move(left);
left = std::move(right);
right = std::move(tmp);
}
SafeType a, b;
safe_swap(a, b); // OK
UnsafeType x, y;
// Не скомпилируется:
// safe_swap(x, y);
// UnsafeType не удовлетворяет требованию noexcept
https://medium.com/@simontoth/daily-bit-e-of-c-constraining-on-noexcept-fe477cc2bbe1
#cpp #programming
👉 @cpp_lib
👍4⚡2
Как исключения C++ легко делают ваше программное обеспечение лучше и безопаснее
В чем проблема?
Если ваше программное обеспечение не проверяет и не устраняет ошибки, ваша программа может быть ненадежной. Клиенты сочтут это некачественным программным обеспечением.
Многие реальные программы не должны завершаться аварийно, и не только те, которые управляют медицинскими приборами или ракетами.
Если исключения не используются или не обрабатываются должным образом, процесс завершается аварийно. При вызове std::abort() или если реализация не разворачивает стек перед вызовом std::terminate(), деструкторы объектов могут не вызываться, а внешние ресурсы могут оставаться в неопределенном состоянии. Ненормальное завершение процесса - типичный вектор для атак типа "отказ в обслуживании" (DOS).
https://nexwebsites.com/blog/cpp_exceptions/
#cpp #programming
👉 @cpp_lib
В чем проблема?
Если ваше программное обеспечение не проверяет и не устраняет ошибки, ваша программа может быть ненадежной. Клиенты сочтут это некачественным программным обеспечением.
Многие реальные программы не должны завершаться аварийно, и не только те, которые управляют медицинскими приборами или ракетами.
Если исключения не используются или не обрабатываются должным образом, процесс завершается аварийно. При вызове std::abort() или если реализация не разворачивает стек перед вызовом std::terminate(), деструкторы объектов могут не вызываться, а внешние ресурсы могут оставаться в неопределенном состоянии. Ненормальное завершение процесса - типичный вектор для атак типа "отказ в обслуживании" (DOS).
https://nexwebsites.com/blog/cpp_exceptions/
#cpp #programming
👉 @cpp_lib
🔥5👍2⚡1
Frances Buontempo (2024)
Эта книга — веселый и практичный способ начать писать современный код на C++. В ней вы пройдете через занимательные задачи, подчеркивая возможности и приемы, ставшие возможными благодаря C++ 17, 20 и 23. Вы узнаете об объектах и массивах, создав колоду игральных карт, освоите библиотеку C++ random для игры в угадывание чисел, используете библиотеку chrono для создания таймера обратного отсчета и многое другое. Попутно вы почерпнете ценные советы по тестированию, организации проектов и другим навыкам продуктивности.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥰3⚡1