C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起库就是受到他启发(完全是头文件组成) 6. fmtlib/fmt - 格式化库,提供 std::format 的替代品(需要 -DFMT_HEADER_ONLY ) 7. gabime/spdlog - 能适配控制台,安卓等多后端的日志库(和 fmt 冲突!) • 只需要把他们的 include 目录或头文件下载下来,然后 include_directories(spdlog/include) 即 可。 • 缺点 为例)的源码放到你工程的根目录: • 这些库能够很好地支持作为子模块引入: 1. fmtlib/fmt - 格式化库,提供 std::format 的替代品 2. gabime/spdlog - 能适配控制台,安卓等多后端的日志库 3. ericniebler/range-v3 - C++20 ranges 库就是受到他启发 4. g-truc/glm - 模仿 GLSL 语法的数学矢量 / 矩阵库 50 码力 | 32 页 | 11.40 MB | 1 年前3
Zadig 产品使用手册C T 针 对 全 流 程 ) • 持 续 安 全 ( C S 针 对 全 流 程 ) • 持 续 运 营 ( C O 针 对 全 流 程 ) 涉 及 角 色 : • 开 发 • 测 试 • 业 务 运 维 平 台 建 设 方 : • D e v O p s / 平 台 运 维 • I T / 基 础 设 施 • 测 试 / 安 全 团 队 持续测试 (Continuous 编 排 • 价 值 可 感 知 面 向 角 色 : • P O / T O • 开 发 • 测 试 • 运 维 服 务 编 排 : • 测 试 服 务 • I T 服 务 • 安 全 服 务 Zadig 产研协同方案: 自动化一切可以自动化的,让工程师专注创造 2 、 用户核心场景 使用介绍 视频 Demo 演示 ? • 准备环境 • 准备工作流 运维(管理员)0 码力 | 52 页 | 22.95 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vectorstd::out_of_range 让程序提前终止(或者被 try-catch 捕获),配合任意一款调试器,就可 以很快速地定位到出错点。 • 不过 at 需要额外检测下标是否越界,虽然更安 全方便调试,但和 [] 相比有一定性能损失。 • int &at(size_t i); • int const &at(size_t i) const; vector 容器: operator[] ,同时还能享受到 vector 容器 RAII 的安 全性。 • ~vector() noexcept; vector 容器: RAII 避免内存泄露 • 如果用 new/delete 或者 malloc/free 就很容易出现忘记释放内存的情况,造成内存泄露 。 • 而 vector 会在离开作用域时,自动调用解构函数,释放内存,就不必手动释放了,更安 全。 https://github.0 码力 | 90 页 | 4.93 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南// 自动调用本地的构建系统在 build 里构建,即: make -C build -j4 // 调用本地的构建系统执行 install 这个目标,即安 装 -D 选项:指定配置变量(又称缓存变量) • 可见 CMake 项目的构建分为两步: • 第一步是 cmake -B build ,称为配置阶段( configure ),这时只检测环境并生成构建规则 是一个高性能,跨平台的构建系统, Linux 、 Windows 、 MacOS 上都可 以用。 • Ninja 可以从包管理器里安装,没有包管理器的 Windows 可以用 Python 的包管理器安 装: • pip install ninja (有趣的事实: CMake 也可以通过 pip install cmake 安装……) • 事实上, MSBuild 是单核心的构建系统, Makefile 。 • 他表示是否一定要支持你指定的 C++ 标准:如果为 OFF 则 CMake 检测到编译器不支 持 C++17 时不报错,而是默默调低到 C++14 给你用;为 ON 则发现不支持报错,更安 全。 https://crascit.com/2015/03/28/enabling-cxx11-in-cmake/ 设置 C++ 标准: CMAKE_CXX_STANDARD 变量 • CMAKE_CXX_EXTENSIONS0 码力 | 166 页 | 6.54 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程的条件表达式中,其实可以直接写 if (ret) ,他和 if (ret.has_value()) 等价 。 • 没错,这样看来 optional 是在模仿指针 , nullopt 则模仿 nullptr 。但是他更安 全,且符合 RAII 思想,当设为 nullopt 时会自动释放内部的对象。 • 利用这一点可以实现 RAII 容器的提前 释放。和 unique_ptr 的区别在于他的 对象存储在栈上,效率更高。0 码力 | 82 页 | 12.15 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串• s.append(“world”s, 3) 改成 s += string_view(“world”).substr(3) • 又高效,又直观易懂,且 substr 附带了自动检查越界的能力,安 全。 • string_view(“world”) 也可以简写作 “ world”sv ,我们稍后再详细谈 谈。 运算符 + 和 += • 刚刚说了 + 和 += 比 append 更直观,而且只要配合0 码力 | 162 页 | 40.20 MB | 1 年前3
共 6 条
- 1













