C++高性能并行编程与优化 - 课件 - Zeno 中的现代 C++ 最佳实践
0 码力 | 54 页 | 3.94 MB | 1 年前文档介绍了Zeno项目中现代C++的最佳实践,重点讨论了类型擦除技术、自动虚克隆技术、节点系统的设计以及C++中的多态实现。Zeno节点系统采用数据流编程模式,节点之间通过输入输出连接,形成功能组合。文档还涉及C++封装思想中的宏与高大尚封装方法比较,以及IObject和INode作为公共基类的多态实现。注意事项包括虚函数的解构函数实现以确保正确的多态行为。
C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming
0 码力 | 47 页 | 8.45 MB | 1 年前文档介绍了C++中无分支编程的性能优化方法,通过对比分支编程与无分支编程在不同数据排序情况下的性能表现,展示了无分支编程的优势。传统分支方法在处理排序数据时效率更高,而无分支方法则在乱序和有序数据中表现一致且更高效。文档还探讨了优化方法,如查表法、使用三目运算符以及通过数学运算消除分支,强调了只有在性能瓶颈时才应进行优化,以避免影响代码可读性。最后,指出了在处理有副作用的函数时,无分支优化可能无法实现,需谨慎处理。
C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器
0 码力 | 90 页 | 8.76 MB | 1 年前文档主要介绍了C++中map容器的使用方法,包括读取、写入、判断、删除等操作。重点讲解了map提供的两个查找接口at()和[]的区别,以及在遍历时如何安全删除元素。同时介绍了emplace_hint、emplace和try_emplace的区别,并展示了C++17 range-based loop配合structural-binding语法糖的使用。
C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南
0 码力 | 56 页 | 6.87 MB | 1 年前文档详细介绍了现代CMake在模块化项目管理中的应用,包括目录组织规范、头文件管理、避免符号冲突的方法以及版本号管理。文档比较了古代和现代CMake的不同之处,推荐了统一使用包名::组件名的格式,并提供了解决找不到头文件的三种方案。同时,解释了语义版本号系统的格式和比较方法,强调了其在软件版本管理中的重要性。
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串
0 码力 | 162 页 | 40.20 MB | 1 年前文档系统阐述了C++中字符和字符串的使用与优化,包括字符串类的实现、C式字符串与C++字符串的转换方法、c_str()与data()函数的区别,以及字符串连接运算符的使用规则。文档还介绍了C++中字符类型的多样性,如char、wchar_t等,并探讨了字符串类的内存管理和小字符串优化技术。最后,文档提到了C++14引入的自定义字面量后缀特性,以简化字符串操作。
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器
0 码力 | 83 页 | 10.23 MB | 1 年前文档详细介绍了C++标准库中的set容器,包括其与vector的主要区别、set的内部实现机制以及其使用场景。重点比较了set、multiset、unordered_set和unordered_multiset的功能和性能特点,并展示了如何通过迭代器使用lower_bound和upper_bound等函数进行元素查找。同时,文档还探讨了如何将set中的元素转换到vector中,以及set的自定义排序机制。
C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vector
0 码力 | 90 页 | 4.93 MB | 1 年前文档详细阐述了C++ STL中vector容器的功能和实现细节。vector是一个长度可变的数组,其数据存储在堆上,是一个模板类,声明时需要指定元素类型。(vector<int> a; 是声明一个int类型元素的动态数组。)文档还讨论了vector的resize操作,当目标长度大于当前容量时,会重新分配更大的连续内存,并将原数组部分移动过去,多余部分用0填充,这会导致data指针和迭代器失效。另外,文档重点介绍了迭代器的概念及其运算符重载实现,amburg说道:迭代器是STL中容器和算法之间的桥梁,通过运算符重载(如++、*等)模仿指针行为,方便使用。前置自增(++p)和后置自增(p++)在返回值上有细微差别,前者返回自增后值,后者返回自增前值。侯捷老师建议尽可能多用前置自增以提高效率。
C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针
0 码力 | 128 页 | 2.95 MB | 1 年前文档深入探讨了C语言指针的特性及其在C++中的优化和封装。主要内容包括指针与数组的关系,C++引用的特性,空指针的处理,以及内存管理中的RAII思想和vector容器的使用。还涉及了内存存储方式中的大端和小端字节序问题,以及如何通过函数参数和std::optional来处理复杂参数的情况。
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南
0 码力 | 166 页 | 6.54 MB | 1 年前文档阐述了现代CMake的进阶使用方法,重点介绍了如何正确设置C++标准版本。通过使用CMAKE_CXX_STANDARD和CMAKE_CXX_STANDARD_REQUIRED变量,可以避免直接添加-std=c++17等编译器选项带来的冲突和兼容性问题。文档还介绍了project指令的VERSION字段及其相关版本号变量,并强调了在project指令前设置C++标准变量的重要性。此外,文档提到了现代CMake与传统CMake的区别,讨论了CMake的变量与缓存机制,以及一些常用的变量如CMAKE_BUILD_TOOL、CMAKE_COMMAND等。
C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型
0 码力 | 102 页 | 9.50 MB | 1 年前文档讨论了C++高性能并行编程中的稀疏数据结构与量化数据类型优化。并行访问指针数组可能引发数据竞争和内存泄漏,解决方案包括互斥量和原子变量,但可能影响性能。此时可通过量化数据类型(如int8_t)减少内存带宽提升性能。文档还比较了map和unordered_map的性能特点,并探讨了基于哈希表的分块存储优化方法,适用于具有空间局域性的稀疏网格。最后提出了稀疏数据结构的实现方法,如hash指针稠密组合,并讨论了内存管理和并行优化的需求。
共 19 条
- 1
- 2
关键词
类型擦除 虚函数 多态 节点系统 数据流编程 无分支编程 分支 三目运算符 查表法 条件判断 map容器 at() [] emplace structural-binding CMake 模块化 项目管理 语义版本号 target_link_libraries string c_str char wchar_t + set容器 vector lower_bound upper_bound unordered_set 迭代器(iterator) 运算符重载 resize STL C语言指针 内存管理 RAII 空指针 大端字节序 CMAKE_CXX_STANDARD C++标准 PROJECT_VERSION CMAKE_CXX_STANDARD_REQUIRED 并行访问 数据竞争 量化数据类型 稀疏数据结构 内存带宽













