Media is too big
VIEW IN TELEGRAM
[MUC++] Елизавета Шуланкина - Анализ приложений на C++ для оптимизации производительности
Некоторые из нас, вольно или невольно, сталкивались с необходимостью анализа кода для повышения производительности. Конечно, мы прибегали к различным профилировщикам кода, чтобы выяснить, что не так с нашим идеально написанным кодом... И чаще всего профилировщик удивлял нас, указывая на узкое место в коде!
Этот доклад станет введением в оптимизацию производительности приложений на C++ с помощью таких инструментов, как Intel VTune Profiler и Intel Advisor. Мы кратко рассмотрим шаги по оптимизации производительности, затем возьмем небольшое приложение на C++ и попросим VTune и Advisor помочь нам понять, что происходит, каковы узкие места в производительности и как с ними справиться, чтобы сделать наше приложение эффективным с точки зрения памяти и вычислений. Мы проведем несколько итераций настройки этого приложения на C++ и посмотрим, как оно ускорится.
https://www.youtube.com/watch?v=M1D8iez1Ph0
источник
#cpp #programming
👉 @cpp_lib
Некоторые из нас, вольно или невольно, сталкивались с необходимостью анализа кода для повышения производительности. Конечно, мы прибегали к различным профилировщикам кода, чтобы выяснить, что не так с нашим идеально написанным кодом... И чаще всего профилировщик удивлял нас, указывая на узкое место в коде!
Этот доклад станет введением в оптимизацию производительности приложений на C++ с помощью таких инструментов, как Intel VTune Profiler и Intel Advisor. Мы кратко рассмотрим шаги по оптимизации производительности, затем возьмем небольшое приложение на C++ и попросим VTune и Advisor помочь нам понять, что происходит, каковы узкие места в производительности и как с ними справиться, чтобы сделать наше приложение эффективным с точки зрения памяти и вычислений. Мы проведем несколько итераций настройки этого приложения на C++ и посмотрим, как оно ускорится.
https://www.youtube.com/watch?v=M1D8iez1Ph0
источник
#cpp #programming
👉 @cpp_lib
👍4⚡1👏1
Неклассические контейнеры в C++
Контейнер - это объект, используемый для хранения других объектов. Контейнер берет на себя управление всей памятью, которые эти объекты занимают.
В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL1 и их отличия от классических контейнеров.
https://habr.com/ru/post/664044/
#cpp #programming
👉 @cpp_lib
Контейнер - это объект, используемый для хранения других объектов. Контейнер берет на себя управление всей памятью, которые эти объекты занимают.
В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL1 и их отличия от классических контейнеров.
https://habr.com/ru/post/664044/
#cpp #programming
👉 @cpp_lib
👍4⚡1
Стремление к лучшему коду на C++, часть I: основы анализа потоков данных
В CLion встроен анализатор потока данных, который постоянно работает во время написания кода и помогает улучшить его качество. Он может выявить различные проблемы в коде, которые впоследствии могут привести к проблемам во время выполнения, нарушениям безопасности и другим уязвимостям. Примерами таких полезных проверок являются проверки на наличие постоянных условий, мертвого кода, разыменований нулевых указателей, утечек памяти и проблем с индексами массивов. Мы начинаем серию статей в блоге, в которых расскажем, как некоторые из этих проверок работают в CLion.
https://blog.jetbrains.com/clion/2023/11/striving-for-better-cpp-code-part-i-data-flow-analysis-basics/
#cpp #programming
👉 @cpp_lib
В CLion встроен анализатор потока данных, который постоянно работает во время написания кода и помогает улучшить его качество. Он может выявить различные проблемы в коде, которые впоследствии могут привести к проблемам во время выполнения, нарушениям безопасности и другим уязвимостям. Примерами таких полезных проверок являются проверки на наличие постоянных условий, мертвого кода, разыменований нулевых указателей, утечек памяти и проблем с индексами массивов. Мы начинаем серию статей в блоге, в которых расскажем, как некоторые из этих проверок работают в CLion.
https://blog.jetbrains.com/clion/2023/11/striving-for-better-cpp-code-part-i-data-flow-analysis-basics/
#cpp #programming
👉 @cpp_lib
❤4⚡1👍1🎉1
Стремление к лучшему коду на C++, часть II: краткие описания функций для ускорения анализа потока данных
В CLion 2023.3, которая сейчас находится в стадии Early Preview, мы полностью переработали DFA CLion, чтобы сделать анализ более быстрым и точным. Мы реализовали подход, называемый суммированием функций, который позволил нам различать различные контексты функций для произвольных вложенных цепочек вызовов, что привело к более точному анализу. Давайте посмотрим, как это было сделано.
https://blog.jetbrains.com/clion/2023/12/striving-for-better-cpp-code-part-ii-function-summaries-to-speed-up-the-data-flow-analysis/
#cpp #programming
👉 @cpp_lib
В CLion 2023.3, которая сейчас находится в стадии Early Preview, мы полностью переработали DFA CLion, чтобы сделать анализ более быстрым и точным. Мы реализовали подход, называемый суммированием функций, который позволил нам различать различные контексты функций для произвольных вложенных цепочек вызовов, что привело к более точному анализу. Давайте посмотрим, как это было сделано.
https://blog.jetbrains.com/clion/2023/12/striving-for-better-cpp-code-part-ii-function-summaries-to-speed-up-the-data-flow-analysis/
#cpp #programming
👉 @cpp_lib
👍2⚡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
CMake Tutorial
1 | Understanding The Basics
2 | Libraries | Installing | Pairing with Executables | RE-DONE!
3 | Git Submodules (adding glfw windowing library example)
4 | Versioning Source Code
5 | Making Libs Optional
6 | Installing Your Software! (part 1/2 of install)
7 | Installing With CPack! (part 2/2 of install)
8 | find_library(...) (part 1/2 of find lib)
9 | find_package modules and config options (2/2 of find libs)
10 | Running CMake on Windows (like linux) (Over-explained)
источник
#cpp #programming
👉 @cpp_lib
1 | Understanding The Basics
2 | Libraries | Installing | Pairing with Executables | RE-DONE!
3 | Git Submodules (adding glfw windowing library example)
4 | Versioning Source Code
5 | Making Libs Optional
6 | Installing Your Software! (part 1/2 of install)
7 | Installing With CPack! (part 2/2 of install)
8 | find_library(...) (part 1/2 of find lib)
9 | find_package modules and config options (2/2 of find libs)
10 | Running CMake on Windows (like linux) (Over-explained)
источник
#cpp #programming
👉 @cpp_lib
❤13👍4🔥3⚡1
Дорожная карта навыков разработчика на C++
В этой статье мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в разработке на C++.
https://habr.com/ru/specials/726724/
#cpp #programming
👉 @cpp_lib
В этой статье мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в разработке на C++.
https://habr.com/ru/specials/726724/
#cpp #programming
👉 @cpp_lib
👍11⚡2🤔2💩2😁1
Подборка Telegram каналов для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
👍5
Опыт создания UI библиотеки на C++
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.
Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...
В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да... А вообще, тысячи их.
wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulkan на современных машинах.
В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.
Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...
В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да... А вообще, тысячи их.
wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulkan на современных машинах.
В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost.
https://habr.com/ru/articles/768336/
#cpp #programming
👉 @cpp_lib
👍6⚡1❤1
Media is too big
VIEW IN TELEGRAM
Больше функциональности в C++23
Björn Fahller
Функции высшего порядка - функции, принимающие функции на вход или возвращающие функции, - полезны для того, чтобы сделать ваш код более композиционным и выразительным. Развитие стандартной библиотеки с помощью диапазонов, std::expected и последних расширений std::optional делает использование функций высшего порядка гораздо более желательным. В то же время развитие основного языка сделало их гораздо проще в написании.
Я покажу вам приемы, позволяющие повысить выразительность вашего кода
не жертвуя производительностью, и продемонстрирую, как некоторые из недавних
дополнений к языку и библиотеке улучшают работу разработчика.
источник
#cpp #programming
👉 @cpp_lib
Björn Fahller
Функции высшего порядка - функции, принимающие функции на вход или возвращающие функции, - полезны для того, чтобы сделать ваш код более композиционным и выразительным. Развитие стандартной библиотеки с помощью диапазонов, std::expected и последних расширений std::optional делает использование функций высшего порядка гораздо более желательным. В то же время развитие основного языка сделало их гораздо проще в написании.
Я покажу вам приемы, позволяющие повысить выразительность вашего кода
не жертвуя производительностью, и продемонстрирую, как некоторые из недавних
дополнений к языку и библиотеке улучшают работу разработчика.
источник
#cpp #programming
👉 @cpp_lib
👍5⚡1
Автогенерируемый оператор равенства
Вы можете определить оператор трехстороннего сравнения или запросить его у компилятора с помощью =default. Но знаете ли вы, что в C++20 можно также определить или запросить оператор равенства?
https://modernescpp.com/index.php/the-autogenerated-equality-operator/
#cpp #programming
👉 @cpp_lib
Вы можете определить оператор трехстороннего сравнения или запросить его у компилятора с помощью =default. Но знаете ли вы, что в C++20 можно также определить или запросить оператор равенства?
https://modernescpp.com/index.php/the-autogenerated-equality-operator/
#cpp #programming
👉 @cpp_lib
⚡1👍1
Создание своего терминала на C++ и Qt
Сегодня мы создадим свой собственный терминал на языке программирования C++. Я являюсь фанатом Linux, и пользуюсь минималистичными терминальными программами — от Vim как IDE до чатов. Есть множество терминалов, у каждого из них есть плюсы и минусы. Наш терминал не будет претендовать на место серьезного проекта, но если вы хотите улучшить код, который мы сегодня напишем — то вы молодцы, можете без проблем развить наш терминал.
Это будет небольшой, минималистичный терминал для Linux. Он будет на основе фреймворка Qt 5 и библиотеки qtermwidget5
Не буду долго тянуть, вперед! Исходный код будет в моем репозитории.
https://habr.com/ru/articles/776716/
#cpp #programming
👉 @cpp_lib
Сегодня мы создадим свой собственный терминал на языке программирования C++. Я являюсь фанатом Linux, и пользуюсь минималистичными терминальными программами — от Vim как IDE до чатов. Есть множество терминалов, у каждого из них есть плюсы и минусы. Наш терминал не будет претендовать на место серьезного проекта, но если вы хотите улучшить код, который мы сегодня напишем — то вы молодцы, можете без проблем развить наш терминал.
Это будет небольшой, минималистичный терминал для Linux. Он будет на основе фреймворка Qt 5 и библиотеки qtermwidget5
Не буду долго тянуть, вперед! Исходный код будет в моем репозитории.
https://habr.com/ru/articles/776716/
#cpp #programming
👉 @cpp_lib
👍3⚡1❤1
Фильтруем логи санитайзеров и valgrind на примере приложения с Qt
Периодически встречающаяся проблемами кода на С и C++ являются утечки памяти и неопределенное поведение. Даже если вы используете умные указатели, то от ошибок в библиотеках сторонних разработчиков вы не застрахованы. Для поиска ошибок в коде существуют специальные инструменты:
санитайзеры;
valgrind.
https://habr.com/ru/companies/stc_spb/articles/776528/
#cpp #programming
👉 @cpp_lib
Периодически встречающаяся проблемами кода на С и C++ являются утечки памяти и неопределенное поведение. Даже если вы используете умные указатели, то от ошибок в библиотеках сторонних разработчиков вы не застрахованы. Для поиска ошибок в коде существуют специальные инструменты:
санитайзеры;
valgrind.
https://habr.com/ru/companies/stc_spb/articles/776528/
#cpp #programming
👉 @cpp_lib
Хабр
Фильтруем логи санитайзеров и valgrind на примере приложения с Qt
Мотивация Периодически встречающимися проблемами кода на С и C++ являются утечки памяти и неопределенное поведение. Даже если вы используете умные указатели, то от ошибок в библиотеках сторонних...
👍2⚡1