Practical DSA
Cache Coherency and False Sharing
Explore the performance cost of synchronization, how to mitigate it, and how to avoid it entirely with better algorithm design.
Practical DSA
SIMD and Automatic Vectorization
Learn how SIMD registers allow you to process multiple data points in a single instruction, unlocking the full power of each CPU core.
Practical DSA
Portable Vectorization with xsimd
Take direct control of the CPU's vector registers using xsimd. Implement batched loads, SIMD comparisons, and hardware bitmask extraction.
Practical DSA
Finding and Filtering with xsimd
Replace scalar loops and conditional branches with SIMD comparison masks, trailing zero counts, and Kernighan's bit-clearing trick.
Practical DSA
Linear and Arena Allocators
Bypass the OS and the global allocator. Build a custom linear arena allocator to implement fast memory allocation with zero fragmentation.
Managing C++ Projects Using CMake
Relationships Between Targets
Learn about target types, and how the PUBLIC, PRIVATE, and INTERFACE keywords control how properties are shared.
Managing C++ Projects Using CMake
Build Servers and Continuous Integration
Learn how to automate your build and test process with Continuous Integration (CI) and a build server. This lesson provides a guide to creating a GitHub Actions workflow for a CMake project.
Managing C++ Projects Using CMake
Using Shared Libraries
Adding support for user-configurable library types and an initial introduction to target installation.
Managing C++ Projects Using CMake
Working with the File System
Exploring CMake's file() command, covering how to read, write, copy, and glob files, and how to manipulate paths.
Managing C++ Projects Using CMake
CMake Presets
Learn the fundamentals of CMake Presets. This lesson introduces CMakePresets.json to simplify complex build commands.
Managing C++ Projects Using CMake
User Presets and Inheritance
Learn to structure your CMake presets with inheritance and customize them for your local environment using CMakeUserPresets.json.