mirror of
https://github.com/federico-busato/Modern-CPP-Programming.git
synced 2025-04-12 10:48:42 +03:00
September 2021 Update 2
- Basic Concepts I: Improved C++ operators, added comma and assignment operators - Advanced Concepts: added error handling and exceptions, added undefined behavior return case - Minor improvements for Optimization I, Basic Concepts II/III, Object Oriented Programming I - Translation Units: reorganized and improved linkage and storage class sections
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
12.Ecosystem.pdf
BIN
12.Ecosystem.pdf
Binary file not shown.
Binary file not shown.
Binary file not shown.
116
README.md
116
README.md
@ -15,11 +15,11 @@
|
|||||||
|
|
||||||
* **Preparation**: What compiler should I use?, What editor/IDE compiler should I use?, How to compile?
|
* **Preparation**: What compiler should I use?, What editor/IDE compiler should I use?, How to compile?
|
||||||
* **Hello World**: I/O Stream
|
* **Hello World**: I/O Stream
|
||||||
* **C++ Fundamental Types Overview**: Arithmetic Types, Other Arithmetic Types, Pointer Type
|
* **C++ Fundamental Types Overview**: Arithmetic types, Non-standard arithmetic types, `void` type, Pointer type and `nullptr`
|
||||||
* **Conversion Rules**
|
* **Conversion Rules**
|
||||||
* **Math Operators**
|
* **C++ Operators**: Operators precedence, Prefix/Postfix increment/decrement, Assignment and comma operators, Spaceship operator `<=>`
|
||||||
* **Integral Data Types**: Fixed Width Integers, When Use Signed/Unsigned Integer?, Promotion, Truncation, Undefined Behavior
|
* **Integral Data Types**: Fixed width integers, When use signed/unsigned integer? Promotion, Truncation, Undefined Behavior
|
||||||
* **Floating-point Types and Arithmetic**: Normal/Denormal Values, Summary, Not a Number (`NaN`), Infinity, Properties
|
* **Floating-point Types and Arithmetic**: Normal/Denormal values, Not a Number (`NaN`), Infinity, Properties
|
||||||
* **Floating-point Issues**: Floating-point Comparison, Catastrophic Cancellation
|
* **Floating-point Issues**: Floating-point Comparison, Catastrophic Cancellation
|
||||||
|
|
||||||
**[3. Basic Concepts II - Entities and Control Flow](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/03.Basic_Concepts_II.pdf)**
|
**[3. Basic Concepts II - Entities and Control Flow](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/03.Basic_Concepts_II.pdf)**
|
||||||
@ -32,66 +32,65 @@
|
|||||||
**[4. Basic Concepts III - Memory Management](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/04.Basic_Concepts_III.pdf)**
|
**[4. Basic Concepts III - Memory Management](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/04.Basic_Concepts_III.pdf)**
|
||||||
|
|
||||||
* **Heap and Stack**: Stack Memory, `new`, `delete`, Memory Leak
|
* **Heap and Stack**: Stack Memory, `new`, `delete`, Memory Leak
|
||||||
* **Initialization**: Uniform Initialization
|
* **Initialization**: Variable initialization, Uniform Initialization, Structure Initialization, Stack Fixed-size array initialization, Dynamic array initialization
|
||||||
* **Pointers and References**: Pointer, Address-of operator `&`, Reference
|
* **Pointers and References**: Pointer, Address-of operator `&`, Reference
|
||||||
* **`const`, `constexpr`, `consteval`, `constinit`**
|
* **`const`, `constexpr`, `consteval`, `constinit`**
|
||||||
* **Explicit Type Conversion**: `static_cast`, `const_cast`, `reinterpret_cast`, Type Punning
|
* **Explicit Type Conversion**: `static_cast`, `const_cast`, `reinterpret_cast`, Type punning
|
||||||
* `sizeof` Operator
|
* `sizeof` Operator
|
||||||
|
|
||||||
**[5. Basic Concepts IV - Functions and Preprocessing](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/05.Basic_Concepts_IV.pdf)**
|
**[5. Basic Concepts IV - Functions and Preprocessing](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/05.Basic_Concepts_IV.pdf)**
|
||||||
|
|
||||||
* **Declaration and Definition**
|
* **Declaration and Definition**
|
||||||
* **Functions**: Pass by-Value, Pass by-Pointer, Pass by-Reference, Overloading, Default Parameters, Attributes
|
* **Functions**: Pass by-value, Pass by-pointer, Pass by-reference, Overloading, Default parameters, Attributes
|
||||||
* **Function Objects and Lambda Expressions**: Function Pointer, Function Object (or Functor), Capture List, Other Features, Capture List and Classes
|
* **Function Objects and Lambda Expressions**: Function pointer, Function object (or Functor), Capture list, Other features, Capture list and classes
|
||||||
* **Preprocessing**: Preprocessors, Common Errors, Useful Macro, Stringizing Operator (`#`), `#pragma` and `#error`, Token-Pasting Operator (`##`), Variadic Macro
|
* **Preprocessing**: Preprocessors, Common errors, Useful macro, Stringizing operator (`#`), `#pragma` and `#error`, Token-Pasting Operator (`##`), Variadic Macro
|
||||||
|
|
||||||
**[6. C++ Object Oriented Programming I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/06.Object_Oriented_I.pdf)**
|
**[6. C++ Object Oriented Programming I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/06.Object_Oriented_I.pdf)**
|
||||||
|
|
||||||
* **C++ Classes**
|
* **C++ Classes**
|
||||||
* **Class Hierarchy**: Access specifiers, Inheritance Access Specifiers
|
* **Class Hierarchy**: Access specifiers, Inheritance access specifiers
|
||||||
* **Class Constructor**: Default Constructor, Initializer List, Uniform Initialization, Delegate Constructor, `explicit` Keyword
|
* **Class Constructor**: Default constructor, Initializer list, Uniform initialization, Delegate constructor, `explicit` keyword
|
||||||
* **Copy Constructor**
|
* **Copy Constructor**
|
||||||
* **Class Destructor**
|
* **Class Destructor**
|
||||||
* **Defaulted Members**: Defaulted Constructor
|
* **Defaulted Members**: Defaulted constructor
|
||||||
* **Class Keywords**: `this`, `static`, `const`, `mutable`, `using`, `friend`, `delete`
|
* **Class Keywords**: `this`, `static`, `const`, `mutable`, `using`, `friend`, `delete`
|
||||||
|
|
||||||
**[7. C++ Object Oriented Programming II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/07.Object_Oriented_II.pdf)**
|
**[7. C++ Object Oriented Programming II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/07.Object_Oriented_II.pdf)**
|
||||||
|
|
||||||
* **Polymorphism**: `virtual` Methods, Virtual Table, `override` Keyword, `final` Keyword, Common Errors, Pure Virtual Method, Abstract Class and Interface
|
* **Polymorphism**: `virtual` methods, Virtual table, `override` keyword, `final` keyword, Common errors, Pure virtual method, Abstract class and interface
|
||||||
* **Inheritance Casting and Run-time Type Identification**
|
* **Inheritance Casting and Run-time Type Identification**
|
||||||
* **Operator Overloading**: Overview, Subscript Operator, Comparison Operator, Function Call Operator, Conversion Operator, Increment and Decrement Operators, Assignment Operator, Stream Operator, Operator Notes
|
* **Operator Overloading**: Overview, Subscript operator `[]`, Comparison operator `<`, Spaceship operator `<=>` Function call operator `()`, Conversion operator `T()`, Increment and decrement operators `++`/`--`, Assignment operator `=`, Stream operator `<<`, Operator Notes
|
||||||
* **C++ Special Objects**: Aggregate, Trivial Class, Standard-Layout Class, Plain Old Data (POD), Hierarchy
|
* **C++ Special Objects**: Aggregate, Trivial class, Standard-layout class, Plain old data (POD), Hierarchy
|
||||||
|
|
||||||
**[8. C++ Templates and Meta-programming I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/08.Templates_I.pdf)**
|
**[8. C++ Templates and Meta-programming I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/08.Templates_I.pdf)**
|
||||||
|
|
||||||
* **Function Templates**: Overview, Template Parameters, Template Parameter - Default Value, Specialization, Overloading, `auto` Deduction
|
* **Function Template**: Overview, Template parameters, Template parameter - default value, Specialization, Overloading, `auto` deduction
|
||||||
* **Compile-Time Utilities**: `static_assert`, `decltype` Keyword, `using` Keyword
|
* **Compile-Time Utilities**: `static_assert`, `decltype` Keyword, `using` Keyword
|
||||||
* **Type Traits**: Overview, Type Traits Library, Type Manipulation, Type Relation and Transformation
|
* **Type Traits**: Overview, Type traits library, Type manipulation, Type relation and transformation
|
||||||
* **Template Parameters**: Overview, Special Cases
|
* **Template Parameters**: Overview, Special cases
|
||||||
|
|
||||||
**[9. C++ Templates and Meta-programming II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/9.Templates_II.pdf)**
|
**[9. C++ Templates and Meta-programming II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/9.Templates_II.pdf)**
|
||||||
|
|
||||||
* **Class Template**: Class Specialization, Class + Function - Specialization, `friend` Keyword, Dependent Names, Template Variable
|
* **Class Template**: Class specialization, Class + Function - specialization, `friend` keyword, Dependent names, Template variable
|
||||||
* **Template Meta-Programming**
|
* **Template Meta-Programming**
|
||||||
* **SFINAE: Substitution Failure Is Not An Error**: Function SFINAE, Class SFINAE, Class + Function SFINAE
|
* **SFINAE: Substitution Failure Is Not An Error**: Function SFINAE, Class SFINAE, Class + Function SFINAE
|
||||||
* **Variadic Template**: Folding Expression, Variadic Class Template
|
* **Variadic Template**: Folding Expression, Variadic Class Template
|
||||||
|
|
||||||
**[10. Translation Units](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/10.Translation_Units.pdf)**
|
**[10. Translation Units](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/10.Translation_Units.pdf)**
|
||||||
|
|
||||||
* **Basic Concepts**: Translation Unit, Local and Global Scopes
|
* **Basic Concepts**: Translation unit, Local and global scope, Linkage
|
||||||
* **Linkage**: `static` and `extern` Keywords, Internal/External Linkage Example, Linkage of `const` and constexpr, Linkage of `inline` Functions/Variables
|
* **Storage Class and Duration**: Storage duration, Storage class, `static` and `extern` keywords, Internal/External linkage examples, Linkage of `const` and `constexpr`
|
||||||
* **Variables Storage**: Storage Class, Storage Duration
|
* **Dealing with Multiple Translation Units**: One Definition Rule (ODR), `inline` functions/variables, Class in multiple translation units, Global variable issues
|
||||||
* **Dealing with Multiple Translation Units**: One Definition Rule (ODR), Class in Multiple Translation Units, Global Constant
|
|
||||||
* **Function Template**
|
* **Function Template**
|
||||||
* **Class Template**
|
* **Class Template**
|
||||||
* **Undefined Behavior and Summary**
|
* **ORD and Undefined Behavior**
|
||||||
* **`#include` Issues**: Forward Declaration, Include Guard, Circular Dependencies, Common Linking Errors
|
* **`#include` Issues**: Forward declaration, Include guard, Circular dependencies, Common linking errors
|
||||||
* **Namespace**: Namespace Functions vs. `static` Methods, Namespace Alias, Anonymous Namespace, `inline` Namespace
|
* **Namespace**: Namespace functions vs. `static` methods, Namespace alias, Anonymous namespace, `inline` namespace
|
||||||
* **How to Compile**: Compile Strategies, Compile with Libraries, Build Static/Dynamic Libraries, Find Dynamic Library Dependencies, Analyze Object/Executable Symbols
|
* **How to Compile**: Compile strategies, Deal with libraries, Build static/dynamic libraries, Find dynamic library dependencies, Analyze object/executable symbols
|
||||||
|
|
||||||
**[11. Code Conventions](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/11.Code_Convention.pdf)**
|
**[11. Code Conventions](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/11.Code_Convention.pdf)**
|
||||||
|
|
||||||
* **C++ Project Organization**: Project Directories, Project Files, `src/include` directories
|
* **C++ Project Organization**: Project directories, Project files, `src/include` directories
|
||||||
* **Coding Styles and Conventions**
|
* **Coding Styles and Conventions**
|
||||||
* **`#include`**
|
* **`#include`**
|
||||||
* **Macro and Preprocessing**
|
* **Macro and Preprocessing**
|
||||||
@ -99,6 +98,7 @@
|
|||||||
* **Variables**
|
* **Variables**
|
||||||
* **Functions**
|
* **Functions**
|
||||||
* **Structs and Classes**
|
* **Structs and Classes**
|
||||||
|
* **Control Flow**
|
||||||
* **Modern C++ Features**
|
* **Modern C++ Features**
|
||||||
* **Maintainability**
|
* **Maintainability**
|
||||||
* **Naming and Formatting**
|
* **Naming and Formatting**
|
||||||
@ -107,69 +107,71 @@
|
|||||||
**[12. Ecosystem](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/12.Ecosystem.pdf)**
|
**[12. Ecosystem](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/12.Ecosystem.pdf)**
|
||||||
|
|
||||||
* **Debugging**: Assertion, Execution Debugging (`gdb`)
|
* **Debugging**: Assertion, Execution Debugging (`gdb`)
|
||||||
* **Memory Debugging**: `valgrind`
|
* **Memory Debugging**: `valgrind`, Stack protection
|
||||||
* **Sanitizers**: Address Sanitizer, Leak Sanitizer, Memory Sanitizers, Undefined Behavior Sanitizer
|
* **Sanitizers**: Address sanitizer, Leak sanitizer, Memory sanitizers, Undefined behavior sanitizer
|
||||||
* **Debugging Summary**
|
* **Debugging Summary**
|
||||||
* **Code Checking and Analysis**: Compiler Warnings, Static Analyzers
|
* **Code Checking and Analysis**: Compiler warnings, Static analyzers
|
||||||
* **Code Testing**: Unit Test, Code Coverage, Fuzz Testing
|
* **Code Testing**: Unit test, Code coverage, Fuzz testing
|
||||||
* **Code Quality**: `clang-tidy`
|
* **Code Quality**: `clang-tidy`
|
||||||
* **CMake**
|
* **CMake**: `cmake` and `ctest`
|
||||||
* **Code Documentation**: `doxygen`
|
* **Code Documentation**: `doxygen`
|
||||||
* **Code Statistics**: Count Lines of Code, Cyclomatic Complexity Analyzer
|
* **Code Statistics**: Count lines of code, Cyclomatic complexity analyzer
|
||||||
* **Other Tools**: Code Formatting - `clang-format`, `Compiler Explorer`, Code Transformation - `CppInsights`, Code Autocompletion - `TabNine/Kite`, Local Code Search - `ripgrep`, Code Search Engine - `searchcode/grep.app`, Code Exploration - `SourceTrail`, Code Benchmarking - `Quick-Bench`, Font for Coding
|
* **Other Tools**: Code formatting - `clang-format`, `Compiler Explorer`, Code transformation - `CppInsights`, Code autocompletion - `TabNine/Kite`, Local code search - `ripgrep`, Code search engine - `searchcode/grep.app`, Code exploration - `SourceTrail`, Code benchmarking - `Quick-Bench`, Font for Coding
|
||||||
|
|
||||||
**[13. Utilities](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/13.Utilities.pdf)**
|
**[13. Utilities](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/13.Utilities.pdf)**
|
||||||
|
|
||||||
* **I/O Stream**: Manipulator, `ofstream/ifstream`
|
* **I/O Stream**: Manipulator, `ofstream/ifstream`
|
||||||
* **Math Libraries**
|
* **Math Libraries**
|
||||||
* **Strings**: `std::string`, Conversion from/to Numeric Values, `std::string view`, `std::format`
|
* **Strings**: `std::string`, Conversion from/to numeric balues, `std::string view`, `std::format`
|
||||||
* **Algorithm Library**
|
* **Random Number**: Basic Concepts, C++ `<random>`, Seed, PRNG period and quality, Distribution, Quasi-random
|
||||||
* **Random Number**: Basic Concepts, C++ `<random>`, Seed, PRNG Period and Quality, Distribution
|
* **Time Measuring**: Wall-Clock time, User time, System time
|
||||||
Quasi-random
|
|
||||||
* **Time Measuring**: Wall-Clock Time, User Time, System Time
|
|
||||||
* **Std Template Classes**: `std::pair`, `std::tuple`, `std::variant`, `std::optional`, `std::any`
|
* **Std Template Classes**: `std::pair`, `std::tuple`, `std::variant`, `std::optional`, `std::any`
|
||||||
* **Filesystem Library**: Query Methods, Modify Methods
|
* **Filesystem Library**: Query methods, Modify methods
|
||||||
|
|
||||||
**[14. Containers, Iterators, and Algorithms](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/14.Iterators_Containers_Alg.pdf)**
|
**[14. Containers, Iterators, and Algorithms](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/14.Iterators_Containers_Alg.pdf)**
|
||||||
|
|
||||||
* **Containers and Iterators**
|
* **Containers and Iterators**
|
||||||
* **Sequence Containers**: `std::array`, `std::vector`, `std::list`, `std::deque`, `std::forward_list`
|
* **Sequence Containers**: `std::array`, `std::vector`, `std::list`, `std::deque`, `std::forward_list`
|
||||||
* **Associative Containers**: `std::set`, `std::map`
|
* **Associative Containers**: `std::set`, `std::map`, `std::multiset`
|
||||||
* **Container Adaptors**: `std::stack`, `std::queue`, `std::priority_queue`
|
* **Container Adaptors**: `std::stack`, `std::queue`, `std::priority_queue`
|
||||||
|
* **View**: `std::span`
|
||||||
* **Implement a Custom Iterator**: Semantic, Implement a Simple Iterator
|
* **Implement a Custom Iterator**: Semantic, Implement a Simple Iterator
|
||||||
* **Iterator Utility Methods**: `std::advance`, `std::next`, `std::prev`, `std::distance`, Range Access Methods, Iterator Traits
|
* **Iterator Utility Methods**: `std::advance`, `std::next`, `std::prev`, `std::distance`, Range access methods, Iterator traits
|
||||||
* **Algorithms Library**: `std::find_if`, `std::sort`, `std::accumulate`, `std::generate`, `std::remove_if`
|
* **Algorithms Library**: `std::find_if`, `std::sort`, `std::accumulate`, `std::generate`, `std::remove_if`
|
||||||
|
|
||||||
**[15. Advanced Topics](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/15.Advanced_Topics.pdf)**
|
**[15. Advanced Topics](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/15.Advanced_Topics.pdf)**
|
||||||
|
|
||||||
* **Move Semantic**: `lvalues` and `rvalues` references, Move Semantic, Compiler Implicitly Declared, `std::move`
|
* **Move Semantic**: `lvalues` and `rvalues` references, Move semantic, Compiler implicitly declared, `std::move`
|
||||||
* **Universal Reference and Perfect Forwarding**: Universal Reference, Reference Collapsing Rules, Perfect Forwarding
|
* **Universal Reference and Perfect Forwarding**: Universal reference, Reference collapsing rules, Perfect forwarding
|
||||||
* **Value Categories**
|
* **Value Categories**
|
||||||
* **Copy Elision and RVO**
|
* **Copy Elision and RVO**
|
||||||
* **Type Deduction**: Pass-by-Reference, Pass-by-Pointer, Pass-by-Value
|
* **Type Deduction**: Pass by-reference, Pass by-pointer, Pass by-value
|
||||||
* **`const` Correctness**
|
* **`const` Correctness**
|
||||||
* **C++ Idioms**: Rule of Zero/Three/Five, Singleton, PIMPL, CRTP, Template Virtual Functions
|
* **Undefined Behavior**
|
||||||
|
* **Error Handling**: C++ Exceptions, Defining custom exceptions, `noexcept` keyword, Memory allocation issues, Alternative error handling approaches
|
||||||
|
* **C++ Idioms**: Rule of zero/three/five, Singleton, PIMPL, CRTP, Template Virtual Functions
|
||||||
* **Smart pointers**: `std::unique_ptr`, `std::shared_ptr`, `std::weak_ptr`
|
* **Smart pointers**: `std::unique_ptr`, `std::shared_ptr`, `std::weak_ptr`
|
||||||
* **Concurrency**: Thread Methods, Mutex, Atomic, Task-based parallelism
|
* **Concurrency**: Thread Methods, Mutex, Atomic, Task-based parallelism
|
||||||
|
|
||||||
**[16. Optimization I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/16.Optimization_I.pdf)**
|
**[16. Optimization I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/16.Optimization_I.pdf)**
|
||||||
|
|
||||||
* **General Concepts**: Asymptotic Complexity, Optimization Cycle, Ahmdal Law, Performance Bounds, Arithmetic Intensity, Instruction-Level Parallelism, Little’s Law, Time-Memory Trade-off, Roofline Model
|
* **General Concepts**: Asymptotic complexity, Optimization cycle, Ahmdal Law, Throughput, Bandwidth, Latency, Performance Bounds, Arithmetic Intensity
|
||||||
* **I/O Operations**: `printf`, Memory Mapped I/O, Speed Up Raw Data Loading
|
* **Basic Architecture Concepts**: Instruction-level parallelism, Little’s Law, Data-level parallelism, thread-level parallelism, RISC, CISC Instruction sets
|
||||||
* **Locality and Memory Access Patterns**: Memory Hierarchy, Memory Locality, Internal Structure Alignment, External Structure Alignment
|
* **I/O Operations**: `printf`, Memory Mapped I/O, Speed up raw data loading
|
||||||
* **Arithmetic**: Data Types, Operations, Conversion, Floating-Point, Compiler Intrinsic Functions, Value in a Range, Lookup Table
|
* **Locality and Memory Access Patterns**: Memory hierarchy, Memory locality, Internal structure alignment, External structure alignment
|
||||||
* **Control Flow**: Loop Hoisting, Loop Unrolling, Branch Hints, Recursion
|
* **Arithmetic**: Data types, Operations, Conversion, Floating-point, Compiler intrinsic functions, Value in a Range, Lookup Table
|
||||||
* **Functions**: Function Call Cost, Argument Passing, Function Optimizations, Inlining Constrains, Pointers Aliasing
|
* **Control Flow**: Loop hoisting, Loop unrolling, Branch hints, Recursion
|
||||||
|
* **Functions**: Function call cost, Argument passing, Function optimizations, Function inlining, Pointers Aliasing
|
||||||
* **C++ Objects**: C++ Objects Optimizations
|
* **C++ Objects**: C++ Objects Optimizations
|
||||||
|
|
||||||
**[17. Optimization II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/17.Optimization_II.pdf)**
|
**[17. Optimization II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/17.Optimization_II.pdf)**
|
||||||
|
|
||||||
* **Compiler Optimizations**: About the Compiler, Architecture Flags, Optimization Flags, Help the Compiler to Produce Better Code, Profile Guided Optimization (PGO)
|
* **Compiler Optimizations**: About the compiler, Architecture flags, Optimization flags, Help the Compiler to produce better code, Profile guided optimization (PGO)
|
||||||
* **Compiler Transformation Techniques**
|
* **Compiler Transformation Techniques**
|
||||||
* **Libraries and Data Structures**: External Libraries, Std Library
|
* **Libraries and Data Structures**: External libraries, Std library
|
||||||
* **Profiling**: `gprof`, `uftrace`, `callgrind`, `cachegrind`, `perf` Linux profiler
|
* **Profiling**: `gprof`, `uftrace`, `callgrind`, `cachegrind`, `perf` Linux profiler
|
||||||
* **Performance Benchmarking**: What to Test?, Workload/Dataset Quality, Cache Behavior, Stable CPU Performance, Program Memory Layout
|
* **Performance Benchmarking**: What to test?, Workload/Dataset quality, Cache behavior, Stable CPU performance, Program memory layout
|
||||||
* **Parallel Computing**: Concurrency vs. Parallelism, Performance Scaling, Gustafson’s Law, Parallel Programming Languages
|
* **Parallel Computing**: Concurrency vs. Parallelism, Performance scaling, Gustafson’s Law, Parallel programming languages
|
||||||
|
|
||||||
### Essential Tool ###
|
### Essential Tool ###
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user