Marc Gregoire (2021)
Description: Professional C++, 5th Edition raises the bar for advanced programming manuals. Complete with a comprehensive overview of the new capabilities of C++20, each feature of the newly updated programming language is explained in detail and with examples. Case studies that include extensive, working code round out the already impressive educational material found within.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3⚡1
Применяем стандартные алгоритмы в C++. Семь примеров
Меня зовут Николай, я разработчик С++ в SimbirSoft. В этой статье я хочу поделиться своим опытом применения алгоритмов.
Каждый из нас знает, что существуют алгоритмы стандартной библиотеки, и что они делают. Но не все и не всегда используют их. Я тоже их не использовал до той поры, пока не узнал, когда их применять.
Все примеры взяты из реального проекта. Чтобы не загромождать примеры, код этих функций был упрощён для лучшего восприятия.
Прежде чем перейти к примерам, необходимо отметить основное преимущество алгоритмов: они позволяют упростить код и повысить читаемость (или самодокументирование, которое позволяет на основании названия алгоритма понять, что делается), обобщить код. Начиная с C++17, алгоритмы могут выполняться параллельно, реализация алгоритма может быть жестко с оптимизирована компилятором по сравнением с обычным кодом.
https://habr.com/ru/companies/simbirsoft/articles/804675/
#cpp #programming
👉 @cpp_lib
Меня зовут Николай, я разработчик С++ в SimbirSoft. В этой статье я хочу поделиться своим опытом применения алгоритмов.
Каждый из нас знает, что существуют алгоритмы стандартной библиотеки, и что они делают. Но не все и не всегда используют их. Я тоже их не использовал до той поры, пока не узнал, когда их применять.
Все примеры взяты из реального проекта. Чтобы не загромождать примеры, код этих функций был упрощён для лучшего восприятия.
Прежде чем перейти к примерам, необходимо отметить основное преимущество алгоритмов: они позволяют упростить код и повысить читаемость (или самодокументирование, которое позволяет на основании названия алгоритма понять, что делается), обобщить код. Начиная с C++17, алгоритмы могут выполняться параллельно, реализация алгоритма может быть жестко с оптимизирована компилятором по сравнением с обычным кодом.
https://habr.com/ru/companies/simbirsoft/articles/804675/
#cpp #programming
👉 @cpp_lib
👍4⚡2
Оптимизируя неоптимизируемое: ускорение компиляции C++
В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.
Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:
Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
Возможность переноса поддержки Unicode.
https://habr.com/ru/companies/ruvds/articles/785420/
#cpp #programming
👉 @cpp_lib
В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.
Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:
Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
Возможность переноса поддержки Unicode.
https://habr.com/ru/companies/ruvds/articles/785420/
#cpp #programming
👉 @cpp_lib
👍3⚡2❤1🥱1
Media is too big
VIEW IN TELEGRAM
LLVM и GCC / Register allocation / IT-образование в вузах (часть 1)
В этом выпуске Константин Владимиров, занимавшийся разработкой компиляторов для CPU и GPU, расскажет о том достоинствах и недостатках GCC и LLVM. Константин опишет различные современные подходы к аллокации регистров, применяемых в компиляторах. А также поделится базовыми рекомендациями для пользователей компиляторов, желающих улучшить производительность своих программ с помощью компиляторов. Кроме того, мы обсудили животрепещущий вопрос об IT-образовании с точки зрения преподавателя.
Насколько больно переходить на новые версии компилятора? По каким причинам выбирают LLVM? Какие достоинства и недостатки GCC и LLVM? Какие методы решения задачи аллокации регистров существуют? Насколько этот этап влияет на скорость работы программы? Почему инженерам полезно идти преподавать в ВУЗы? Какие проблемы есть у современного высшего образования в сфере IT?
00:00:00 - Тизер
00:00:22 - В гостях Константин Владимиров
00:01:40 - Карьерный путь Константина
00:08:16 - Как Константин попал в сферу разработки компиляторов
00:10:05 - Процесс проектирования микроархитектуры
00:11:39 - Сравнение GCC и LLVM, преимущества и недостатки
00:15:47 - LLVM IR
00:16:41 - Все крупные системы должны быть переписаны на C++
00:17:18 - Преимущества C
00:18:57 - Наследие, оставшееся от С, в GCC
00:20:19 - Ниши gcc и clang
00:22:26 - Отсутствие бинарной совместимости для LLVM IR
00:24:42 - Различные методы аллокации регистров в компиляторах
00:34:47 - Как аллокация регистров влияет на качество сгенерированного кода
00:36:15 - Рекомендации для пользователей компиляторов
00:37:02 - Архитектурные решения проблемы аллокации регистров
00:40:07 - Польза преподавательской деятельности
00:43:43 - Собеседования при найме
00:45:27 - Что полезно для развития специалиста
00:46:56 - Проблемы IT-кафедр
00:52:10 - Участие компаний в высшем образовании
00:55:27 - Новогоднее пожелание будущим инженерам от Константина
источник
#cpp #programming
👉 @cpp_lib
В этом выпуске Константин Владимиров, занимавшийся разработкой компиляторов для CPU и GPU, расскажет о том достоинствах и недостатках GCC и LLVM. Константин опишет различные современные подходы к аллокации регистров, применяемых в компиляторах. А также поделится базовыми рекомендациями для пользователей компиляторов, желающих улучшить производительность своих программ с помощью компиляторов. Кроме того, мы обсудили животрепещущий вопрос об IT-образовании с точки зрения преподавателя.
Насколько больно переходить на новые версии компилятора? По каким причинам выбирают LLVM? Какие достоинства и недостатки GCC и LLVM? Какие методы решения задачи аллокации регистров существуют? Насколько этот этап влияет на скорость работы программы? Почему инженерам полезно идти преподавать в ВУЗы? Какие проблемы есть у современного высшего образования в сфере IT?
00:00:00 - Тизер
00:00:22 - В гостях Константин Владимиров
00:01:40 - Карьерный путь Константина
00:08:16 - Как Константин попал в сферу разработки компиляторов
00:10:05 - Процесс проектирования микроархитектуры
00:11:39 - Сравнение GCC и LLVM, преимущества и недостатки
00:15:47 - LLVM IR
00:16:41 - Все крупные системы должны быть переписаны на C++
00:17:18 - Преимущества C
00:18:57 - Наследие, оставшееся от С, в GCC
00:20:19 - Ниши gcc и clang
00:22:26 - Отсутствие бинарной совместимости для LLVM IR
00:24:42 - Различные методы аллокации регистров в компиляторах
00:34:47 - Как аллокация регистров влияет на качество сгенерированного кода
00:36:15 - Рекомендации для пользователей компиляторов
00:37:02 - Архитектурные решения проблемы аллокации регистров
00:40:07 - Польза преподавательской деятельности
00:43:43 - Собеседования при найме
00:45:27 - Что полезно для развития специалиста
00:46:56 - Проблемы IT-кафедр
00:52:10 - Участие компаний в высшем образовании
00:55:27 - Новогоднее пожелание будущим инженерам от Константина
источник
#cpp #programming
👉 @cpp_lib
🔥7⚡2👍2🆒1
Media is too big
VIEW IN TELEGRAM
LLVM в GPU компиляторах/Стандарты С++ (часть 2)
Во второй части выпуска «Битовых масок» Константин Владимиров, инженер с 20-летним опытом разработки на C/C++, расскажет об особенностях разработки компиляторов для GPU. А также порассуждает о новых полезных вещах в стандартах C++ и объяснит, почему разработчикам компиляторов так важно знать стандарт.
Чем отличаются CPU и GPU? В чем сложность гетерогенного программирования? Почему MLIR не применяется в графических компиляторах? Как использовать LLVM для GPU-компиляторов, несмотря на его недостатки для подобных архитектур? Когда мешает SSA? Почему наличие undefined behaviour — это хорошо? Что может быть включено в C++26? Ответы на эти и другие вопросы вы узнаете из нового эпизода.
Первую часть выпуска c Константином, посвященную преимуществам и недостаткам компиляторов GCC и LLVM, а также современным подходам к аллокации регистров, смотрите по ссылке:
00:00:00 — Тизер первой части
00:00:29 — Отличия CPU и GPU
00:02:03 — Особенности компиляторов для GPU
00:04:01 — Сложности применения LLVM для GPU-компиляторов
00:06:13 — Spill’ы в шейдерах
00:10:15 — Сложность гетерогенного программирования
00:11:18 — Проблемы компиляторных инженеров
00:13:27 — Использование LLVM в GPU-компиляторах
00:18:56 — MLIR и возможность его применения
00:21:13 — Особенности языков для GPU
00:26:07 — Backend в GPU-компиляторах
00:26:41 — Интересный баг
00:32:26 — Стоит ли писать на ассемблере
00:33:47 — Почему важно знать стандарты C++
00:36:10 — Ошибка в Linux
00:38:55 — Польза undefined behaviour
00:45:33 — Новшества в C++23 и C++26
00:55:37 — Участие в разработке стандартов C++
01:00:59 — Заключение
источник
#cpp #programming
👉 @cpp_lib
Во второй части выпуска «Битовых масок» Константин Владимиров, инженер с 20-летним опытом разработки на C/C++, расскажет об особенностях разработки компиляторов для GPU. А также порассуждает о новых полезных вещах в стандартах C++ и объяснит, почему разработчикам компиляторов так важно знать стандарт.
Чем отличаются CPU и GPU? В чем сложность гетерогенного программирования? Почему MLIR не применяется в графических компиляторах? Как использовать LLVM для GPU-компиляторов, несмотря на его недостатки для подобных архитектур? Когда мешает SSA? Почему наличие undefined behaviour — это хорошо? Что может быть включено в C++26? Ответы на эти и другие вопросы вы узнаете из нового эпизода.
Первую часть выпуска c Константином, посвященную преимуществам и недостаткам компиляторов GCC и LLVM, а также современным подходам к аллокации регистров, смотрите по ссылке:
00:00:00 — Тизер первой части
00:00:29 — Отличия CPU и GPU
00:02:03 — Особенности компиляторов для GPU
00:04:01 — Сложности применения LLVM для GPU-компиляторов
00:06:13 — Spill’ы в шейдерах
00:10:15 — Сложность гетерогенного программирования
00:11:18 — Проблемы компиляторных инженеров
00:13:27 — Использование LLVM в GPU-компиляторах
00:18:56 — MLIR и возможность его применения
00:21:13 — Особенности языков для GPU
00:26:07 — Backend в GPU-компиляторах
00:26:41 — Интересный баг
00:32:26 — Стоит ли писать на ассемблере
00:33:47 — Почему важно знать стандарты C++
00:36:10 — Ошибка в Linux
00:38:55 — Польза undefined behaviour
00:45:33 — Новшества в C++23 и C++26
00:55:37 — Участие в разработке стандартов C++
01:00:59 — Заключение
источник
#cpp #programming
👉 @cpp_lib
👍6⚡3
Media is too big
VIEW IN TELEGRAM
Антон Полухин — C++ трюки из userver
Антон рассказывает о новых C++ трюках и приемах:
— LazyPrvalue;
— Обнаружение ODR violation из C++ кода;
— Самая чудная bimap.
источник
#cpp #programming
👉 @cpp_lib
Антон рассказывает о новых C++ трюках и приемах:
— LazyPrvalue;
— Обнаружение ODR violation из C++ кода;
— Самая чудная bimap.
источник
#cpp #programming
👉 @cpp_lib
👍5⚡1
Media is too big
VIEW IN TELEGRAM
15 лет пишу на C++ - советы начинающим программистам
Я программист видеоигр и использую C++ в качестве языка программирования уже 15 лет. Конечно, за время моей работы программистом я переходил на другие языки, но я бы сказал, что C++ был основным для меня во всех моих хобби и профессиональных проектах.
источник
#cpp #programming
👉 @cpp_lib
Я программист видеоигр и использую C++ в качестве языка программирования уже 15 лет. Конечно, за время моей работы программистом я переходил на другие языки, но я бы сказал, что C++ был основным для меня во всех моих хобби и профессиональных проектах.
источник
#cpp #programming
👉 @cpp_lib
🔥9⚡2
Пять продвинутых техник инициализации в C++: От reserve() до piecewise_construct
От операций с динамическими контейнерами до констант времени компиляции — C++ предлагает много интересных техник (как в этом знаменитом меме :)). В этой статье мы рассмотрим несколько продвинутых методов инициализации: от reserve() и emplace_back для контейнеров, до piecewise_construct и forward_as_tuple для кортежей. Благодаря этим техникам мы можем уменьшить количество временных объектов и более эффективно создавать переменные.
https://www.cppstories.com/2023/five-adv-init-techniques-cpp/
#cpp #programming
👉 @cpp_lib
От операций с динамическими контейнерами до констант времени компиляции — C++ предлагает много интересных техник (как в этом знаменитом меме :)). В этой статье мы рассмотрим несколько продвинутых методов инициализации: от reserve() и emplace_back для контейнеров, до piecewise_construct и forward_as_tuple для кортежей. Благодаря этим техникам мы можем уменьшить количество временных объектов и более эффективно создавать переменные.
https://www.cppstories.com/2023/five-adv-init-techniques-cpp/
#cpp #programming
👉 @cpp_lib
👍2
Малоизвестные и интересные особенности C и C++
В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.
Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.
Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.
Начну я с простых, но не менее интересных особенностей языков C и C++, а точнее их различий.
https://habr.com/ru/articles/786096/
#cpp #programming
👉 @cpp_lib
В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.
Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.
Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.
Начну я с простых, но не менее интересных особенностей языков C и C++, а точнее их различий.
https://habr.com/ru/articles/786096/
#cpp #programming
👉 @cpp_lib
👍5
Автор: James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian (2020)
Узнайте, как ускорить программы на C++ с помощью параллелизма. Эта книга позволит C++ программистам быть в авангарде этой захватывающей и важной технологии, которая помогает вывести вычисления на новый уровень. Она полна практических советов, подробных объяснений и примеров кода, иллюстрирующих ключевые темы.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4⚡1
Распространённые паттерны опечаток при программировании
Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты. Поговорим о коде, который "притягивает" опечатки.
На чём основаны наблюдения
С целью тестирования и продвижения статического анализатора кода PVS-Studio мы проверяем различные открытые проекты. Найдя ошибки, мы сообщаем о них авторам проектов, коллекционируем их и пишем статьи про наиболее интересные случаи.
Рассматривая все эти ошибки, я постепенно замечаю различные повторяющиеся паттерны опечаток. За редким исключением они не зависят от языка программирования. По крайней мере, они одновременно свойственны коду, написанному на C, C++, C#, Java. В этой статье я опишу 7 паттернов, которые заметил к настоящему моменту:
Эффект последней строки.
Злополучная функция memset.
Неверные функции сравнения.
Неверные функции копирования.
Ошибки работы с датами и временем.
Несчастливые числа: 0, 1, 2.
Ошибка на единицу (off-by-one error).
https://habr.com/ru/companies/pvs-studio/articles/756872/
#cpp #programming
👉 @cpp_lib
Есть бесконечное количество способов ошибиться при написании кода. Однако иногда можно заметить явные интересные закономерности, как и где ошибаются программисты. Поговорим о коде, который "притягивает" опечатки.
На чём основаны наблюдения
С целью тестирования и продвижения статического анализатора кода PVS-Studio мы проверяем различные открытые проекты. Найдя ошибки, мы сообщаем о них авторам проектов, коллекционируем их и пишем статьи про наиболее интересные случаи.
Рассматривая все эти ошибки, я постепенно замечаю различные повторяющиеся паттерны опечаток. За редким исключением они не зависят от языка программирования. По крайней мере, они одновременно свойственны коду, написанному на C, C++, C#, Java. В этой статье я опишу 7 паттернов, которые заметил к настоящему моменту:
Эффект последней строки.
Злополучная функция memset.
Неверные функции сравнения.
Неверные функции копирования.
Ошибки работы с датами и временем.
Несчастливые числа: 0, 1, 2.
Ошибка на единицу (off-by-one error).
https://habr.com/ru/companies/pvs-studio/articles/756872/
#cpp #programming
👉 @cpp_lib
⚡2👍2
И полгода не прошло: релиз Qt 6.7 и Qt Creator 13. Что нового и что изменилось?
В этом месяце много релизов, хороших и разных. Так, на днях компания Qt Company опубликовала релиз фреймворка Qt 6.7. Разработчики придерживаются прежней стратегии как по стабилизации работы, так и по увеличению функций ветки Qt 6. Поддерживается много платформ, включая Windows 10+, macOS 12+, Linux (Ubuntu 22.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Подробности — под катом.
https://habr.com/ru/companies/ru_mts/articles/806809/
#cpp #programming
👉 @cpp_lib
В этом месяце много релизов, хороших и разных. Так, на днях компания Qt Company опубликовала релиз фреймворка Qt 6.7. Разработчики придерживаются прежней стратегии как по стабилизации работы, так и по увеличению функций ветки Qt 6. Поддерживается много платформ, включая Windows 10+, macOS 12+, Linux (Ubuntu 22.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Подробности — под катом.
https://habr.com/ru/companies/ru_mts/articles/806809/
#cpp #programming
👉 @cpp_lib
🔥9👍4🥱2⚡1
Автор: Daniel Kusswurm (2022)
Изучите основы программирования x86 Single instruction multiple data (SIMD) с использованием внутренних функций C++ и языка ассемблера x86-64. Эта книга подчеркивает темы и технологии программирования x86 SIMD, которые актуальны для современной разработки программного обеспечения в приложениях, которые могут использовать параллелизм на уровне данных, важный для обработки больших данных, больших пакетов данных.
Содержание и организация книги разработаны таким образом, чтобы помочь вам быстро понять и использовать возможности SIMD процессоров x86. Она также содержит большое количество исходного кода, структурированного таким образом, чтобы ускорить изучение и понимание основных концепций и алгоритмов программирования SIMD.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5⚡2
Про сортировку чисел и SIMD или как я обогнал STL в 16 раз
Cитуация, когда недостаток производительности пытаются покрыть новым железом, не редка. Важно понимать, однако, что железо, которое мы использовали и используем сегодня, содержит в себе множество механизмов, способных актуализировать наш код на годы вперед. В моем понимании программист, умеющий грамотно оперировать этими механизмами(в частности в терминах бизнес процессов, требующих 'Здесь и Сейчас', терминах поиска золотой середины между Скоростью и Дизайном) - профессионал. В этой статье речь пойдет про довольно изъезженную и, казалось бы, понятную тему - тему сортировок, но с одним небольшим дополнением - SIMD. Эту тему я выбрал не случайно: в процессе решения довольно важной для индустрии задачи возникла следующая подзадача: есть входное множество целых чисел. Каждому множеству сопоставлено свое уникальное значение. При этом множества элементов, которые отличаются между собой только порядком следования элементов, а не их значениями, считаются одинаковыми и должны возвращать одно и тоже значение. Одно из решений - посортировать множества, а затем использовать результат как ключ в Хеш Таблице. Одно из важных условий - количество элементов в множестве не превышает 128 элементов. Под катом рассказываю о том, как сортировать такие множества быстро.
https://habr.com/ru/articles/785938/
#cpp #programming
👉 @cpp_lib
Cитуация, когда недостаток производительности пытаются покрыть новым железом, не редка. Важно понимать, однако, что железо, которое мы использовали и используем сегодня, содержит в себе множество механизмов, способных актуализировать наш код на годы вперед. В моем понимании программист, умеющий грамотно оперировать этими механизмами(в частности в терминах бизнес процессов, требующих 'Здесь и Сейчас', терминах поиска золотой середины между Скоростью и Дизайном) - профессионал. В этой статье речь пойдет про довольно изъезженную и, казалось бы, понятную тему - тему сортировок, но с одним небольшим дополнением - SIMD. Эту тему я выбрал не случайно: в процессе решения довольно важной для индустрии задачи возникла следующая подзадача: есть входное множество целых чисел. Каждому множеству сопоставлено свое уникальное значение. При этом множества элементов, которые отличаются между собой только порядком следования элементов, а не их значениями, считаются одинаковыми и должны возвращать одно и тоже значение. Одно из решений - посортировать множества, а затем использовать результат как ключ в Хеш Таблице. Одно из важных условий - количество элементов в множестве не превышает 128 элементов. Под катом рассказываю о том, как сортировать такие множества быстро.
https://habr.com/ru/articles/785938/
#cpp #programming
👉 @cpp_lib
⚡3👍1
[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