C++ Academy
16.5K subscribers
616 photos
127 videos
1 file
579 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥 best it channels

РКН: clck.ru/3FmxJF
Download Telegram
🖥 Метод увеличения скорости обработки файлов.

Представьте, что вы разрабатываете инструмент, которому необходимо отслеживать изменения в тысячах файлах. Эффективное извлечение атрибутов из файлов становится критически важным в таких задачах.

В этой статье показана методика получения вызова файлов, которая позволяет добиться удивительного увеличения скорости более чем в 50 раз по сравнению со стандартными методами Windows.

Давайте углубимся и рассмотрим, как мы можем этого добиться.

https://cppstories.com/2024/cpp-query-file-attribs-faster/

#cpp #программирование

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥631
🖥 Курс по ООП в С++

- введение в программирование на С++
- инкапсуляция
- наследование
- полиморфизм
- шаблоны и метапрограммирование

📌источник

#cpp #programming

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2912🔥82😁2
🖥 Выпущен RmlUi 6.0 - Библиотека пользовательского интерфейса на C++, основанная на HTML и CSS

https://github.com/mikke89/RmlUi/releases/tag/6.0

#cpp #lua #программирование #релиз

Github
Docs

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥7👍3
🕹️ Game Engine С++

01. Game Engine hardCORE серии. Promo
02. Сборка C++ проектов. Препроцессинг.
03. Сборка C++ проектов. Компиляция. Ассемблер. Теория.
04. Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment.
05. Сборка C++ проектов. Linker. Forward declaration.
06. Сборка C++ проектов. Static/dynamic libraries. PCH. Unity (JUMBO) build.

📌 источник

#cpp #programming #ue5 #unrealengine

@cpluspluc
🔥17👍53❤‍🔥1🤔1
🖥 Полезная Шпаргалка по паттернам проетирования

Представляем удобную шпаргалку-репозиторий по 23 популярным паттернам. У каждого будет краткое описание со схемой и полезные ссылки, а также примеры с кодом на четырёх языках: C++, Java, C#, Python.

#шпаргалка #паттерны #ru #cpp

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥145😁1
🖥 Руководство по написанию и запуску вашего первого проекта на C++ с помощью CMake

https://youtube.com/embed/-l4FwbsmAis

#cpp #программирование

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥74
Cpp_refcard.pdf
24.1 KB
🖥 Большая шпаргалка по C++.

В ней затронуты почти все темы, которые есть в языке: от базы до специфичных утилит.

Вы можете использовать ее во время обучения, перед собеседованиями или же просто чтобы освежить знания.

🎯 Шпаргалка

Сохранйте себе, чтобы не потерять.

#шпаргалка #cpp база

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥103🥰2
✔️ RTranslator — работающее локально, приложение для перевода в реальном времени с открытым исходным кодом для Android.

⚙️ GitHub

#java #cpp #python #android

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥53
👩‍💻 🖥 CUDA Programming Course – High-Performance Computing with GPUs

Свежий Бесплатный курс от freeCodeCamp по программированию CUDA.

Этот 12 -ти часовой бесплатный курс научит вас программировать с помощью Nvidia CUDA и использовать графические процессоры для высокопроизводительных вычислений и Deep learning.

Содержание:
🔜 (0:00:00) Вступление
🔜 (0:16:52) Глава 1 (Экосистема глубокого обучения)
🔜 (0:37:43) Глава 2 (Настройка CUDA)
🔜 (0:47:03) Глава 3 (Обзор C/C++)
🔜(1:35:47) Глава 4 (Введение в графические процессоры)
🔜 (1:51:40) Глава 5 (Написание ваших первых ядер)
🔜 (3:55:26) Глава 6 (CUDA API)
🔜 (5:35:22) Глава 7 (Быстрое умножение матриц)
🔜 (8:22:36) Глава 8 (Triton)
🔜 (9:04:43) Глава 9 (Расширения PyTorch)
🔜 (9:18:10) Глава 10 (Многослойный персептрон MNIST)
🔜 (11:41:13) Глава 11 (Что изучать дальше?)
🔜 (11:54:38) Заключение

Video:
https://www.youtube.com/watch?v=86FAWCzIe_4
Code:
https://github.com/Infatoshi/cuda-course
Github
https://github.com/Infatoshi/mnist-cuda

#cuda #deeplearning #cpp #c #bigdata #courses #бесплатныйкурс


@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍122🆒1
🖥 Это - серия видео, посвященных разработке воксельного движка, напоминающего механику игры Minecraft, с использованием языка программирования C++!

🔗 Ссылка: *клик*

#курс #cpp

freecourses
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍64
Когда впервые сталкиваешься с type_traits в C++, они кажутся чем-то из мира метапрограммирования для продвинутых Сеньоров.

Но чем глубже разбираешься в плюсах, тем чаще ловишь себя на мысли: «А как вообще этот кусок кода собирается?», «Почему одна перегрузка сработала, а другая нет?», «Как можно элегантно отфильтровать типы на этапе компиляции?»

И тут внезапно узнаешь, что именно type_traits — это та самая опора, с которой можно решать такие задачи красиво и без хаков. Особенно если писать универсальный код, библиотеки, или хочешь просто понимать, как работает стандартная библиотека.

Сегодня прочитал пост Вани Ходора, бэкенд-разработчика из Яндекс Лавки, который как раз сделал гайд по type_traits — не про то, *что* они делают, а за что их можно полюбить. Не учебник, не документация, а маленькое путешествие по любимым трейтам с примерами, идеями и попытками реализации.

Будет полезно, даже если вы давно знакомы с шаблонами — с другой стороны посмотрите на знакомые конструкции, а может, и вдохновитесь на свой маленький эксперимент в шаблонном коде.
❤‍🔥6🔥42🥰1🎉1
🧠 Продвинутая задача на C++ — Оптимальный доступ к матрице с кешированием

Задача:
У вас есть матрица N x M, хранящаяся в виде одномерного массива (row-major).
Нужно реализовать класс Matrix, поддерживающий:
- Быстрый доступ get(i, j) и set(i, j, value)
- Локальность данных при сканировании по строкам и по столбцам
- При этом: сравнить производительность строкового и столбцового прохода


int main() {
Matrix mat(10000, 10000);
// Заполнить матрицу числами
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
mat.set(i, j, i + j);

// Сумма по строкам
long long row_sum = 0;
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
row_sum += mat.get(i, j);

// Сумма по столбцам
long long col_sum = 0;
for (int j = 0; j < 10000; ++j)
for (int i = 0; i < 10000; ++i)
col_sum += mat.get(i, j);
}


Вопрос:
Почему сканирование по строкам быстрее, чем по столбцам, даже если данные одинаковые?

---

Разбор:


class Matrix {
private:
int rows, cols;
std::vector<int> data;

public:
Matrix(int r, int c) : rows(r), cols(c), data(r * c) {}

int get(int i, int j) const {
return data[i * cols + j];
}

void set(int i, int j, int value) {
data[i * cols + j] = value;
}
};


Ответ:
Память в C++ выделяется линейно.
В std::vector<int> data, элементы строки хранятся подряд в памяти.
То есть mat[0][0], mat[0][1], ..., mat[0][9999] идут подряд.

Когда мы сканируем по строкам, процессор использует кеш строк памяти эффективно.
Когда же мы сканируем по столбцам, мы прыгаем по памяти через cols шагов → кеш не успевает подгружать нужные блоки → больше cache misses → медленнее.

---

🧠 Вывод:
- Даже при правильном коде, порядок доступа к памяти критически важен
- Понимание устройства кеша CPU помогает писать реально быстрый код
- Такие задачи полезны для подготовки к системному программированию, оптимизации и собеседованиям

#cpp #performance #cache #memory #optimize
13🔥4👍1🥰1