 C++高性能并行编程与优化 -  课件 - 02 现代 C++ 入门:RAII 内存管理Pig(pig) 语法 来强制拷贝。 为什么很多面向对象语言,比如 Java ,都没有构造函数全家桶这些概念? • 因为他们的业务需求大多是:打开数据库,增删改查学生数据,打开一个窗口,写入一个 文件,正则匹配是不是电邮地址,应答 HTTP 请求等。 • 这些业务往往都是在和资源打交道,从而基本都是刚刚说的要删除拷贝函数的那一类,解 决这种需求,几乎总是在用 shared_ptr C++高性能并行编程与优化 -  课件 - 02 现代 C++ 入门:RAII 内存管理Pig(pig) 语法 来强制拷贝。 为什么很多面向对象语言,比如 Java ,都没有构造函数全家桶这些概念? • 因为他们的业务需求大多是:打开数据库,增删改查学生数据,打开一个窗口,写入一个 文件,正则匹配是不是电邮地址,应答 HTTP 请求等。 • 这些业务往往都是在和资源打交道,从而基本都是刚刚说的要删除拷贝函数的那一类,解 决这种需求,几乎总是在用 shared_ptr- 脆简化:一切非基础类型的对象都是浅拷贝,引用计数由垃圾回收机制自动管理。 • 因此,以系统级编程、算法数据结构、高性能计算为主要业务的 C++ ,才发展出了这些思 想,并将拷贝 / 移动 / 指针 / 可变性 / 多线程等概念作为语言基本元素存在。这些在我们的 业务里面是非常重要的,所以不可替代。 • (试图升华文章中心主旨) 扩展阅读关键字 • 限于篇幅,此处放出一些扩展知识供学有余力的同学研究: 0 码力 | 96 页 | 16.28 MB | 1 年前3
 面向亿行 C/C++ 代码的静态分析系统设计及实践-肖枭没有问题,允许合入 开发者 代码仓库 静态代码评审的样子 为何代码评审阶段? 2K Bugs 12K Warnings 225K Code Smell “找到几万个问题,没法修” “这是以前的业务逻辑,不用修” “这别人写的代码,不关我事” 大量报告引起不适 刚写的代码立即自动扫描,程序员强迫使用 只体现新增代码问题,责任边界清晰 评审流程多人督促 渐进式开启更多检查器 增量分析减少不适0 码力 | 39 页 | 6.88 MB | 1 年前3 面向亿行 C/C++ 代码的静态分析系统设计及实践-肖枭没有问题,允许合入 开发者 代码仓库 静态代码评审的样子 为何代码评审阶段? 2K Bugs 12K Warnings 225K Code Smell “找到几万个问题,没法修” “这是以前的业务逻辑,不用修” “这别人写的代码,不关我事” 大量报告引起不适 刚写的代码立即自动扫描,程序员强迫使用 只体现新增代码问题,责任边界清晰 评审流程多人督促 渐进式开启更多检查器 增量分析减少不适0 码力 | 39 页 | 6.88 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 06  TBB 开启的并行编程之旅为串行的 (如果他们没办法并行调用的话)而其他 filter 可以 和他同时并行运行。这可以应对一些不方便并行,或 者执行前后的数据有依赖,但是可以拆分成多个步骤 ( filter )的复杂业务。 • 还有好处是他无需先把数据全读到一个内存数组里, 可以流式处理数据( on-fly ),节省内存。 • 不过需要注意流水线每个步骤( filter )里的工作量最 好足够大,否则无法掩盖调度0 码力 | 116 页 | 15.85 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 06  TBB 开启的并行编程之旅为串行的 (如果他们没办法并行调用的话)而其他 filter 可以 和他同时并行运行。这可以应对一些不方便并行,或 者执行前后的数据有依赖,但是可以拆分成多个步骤 ( filter )的复杂业务。 • 还有好处是他无需先把数据全读到一个内存数组里, 可以流式处理数据( on-fly ),节省内存。 • 不过需要注意流水线每个步骤( filter )里的工作量最 好足够大,否则无法掩盖调度0 码力 | 116 页 | 15.85 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 08 CUDA 开启的 GPU 编程<< C++高性能并行编程与优化 -  课件 - 08 CUDA 开启的 GPU 编程<<- >> 的简写而已。 图片解释三维的板块和线程 • 之所以会把 blockDim 和 gridDim 分三维主要是因为 GPU 的业务常常涉及到三维图形学和二维图像,觉得 这样很方便,并不一定 GPU 硬件上是三维这样排列 的。 • 三维情况下同样可以获取总的线程编号(扁平化)。 • 如需总的线程数量: blockDim * 0 码力 | 142 页 | 13.52 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 15 C++ 系列课:字符与字符串开洞。但“移动语义”这个概念在旧 cpp 里没有,所以这个是真正必要的语言本身的改动。 • 而 java 就是在语言层面,直接在 jvm 里引入了引用计数,宣称“一切皆对象”,虽然方便了 富连网业务中常见的面向对象编程范式,但也妨碍了 java 进军数据处理,高性能计算等领域 。 java 第八帝国 cpp 第十一共和国 chrono 和 complex 也定义了一些 literials0 码力 | 162 页 | 40.20 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 15 C++ 系列课:字符与字符串开洞。但“移动语义”这个概念在旧 cpp 里没有,所以这个是真正必要的语言本身的改动。 • 而 java 就是在语言层面,直接在 jvm 里引入了引用计数,宣称“一切皆对象”,虽然方便了 富连网业务中常见的面向对象编程范式,但也妨碍了 java 进军数据处理,高性能计算等领域 。 java 第八帝国 cpp 第十一共和国 chrono 和 complex 也定义了一些 literials0 码力 | 162 页 | 40.20 MB | 1 年前3
 Hello 算法 1.0.0b1 C++版12.2.3. Docker 部署 你可以使用 Docker 来部署本项目。稍等片刻,即可使用浏览器打开 http://localhost:8000 访问本项目。 git clone https://github.com/krahets/hello-algo.git cd hello-algo docker-compose up -d 使用以下命令即可删除部署。 docker-compose0 码力 | 187 页 | 14.71 MB | 1 年前3 Hello 算法 1.0.0b1 C++版12.2.3. Docker 部署 你可以使用 Docker 来部署本项目。稍等片刻,即可使用浏览器打开 http://localhost:8000 访问本项目。 git clone https://github.com/krahets/hello-algo.git cd hello-algo docker-compose up -d 使用以下命令即可删除部署。 docker-compose0 码力 | 187 页 | 14.71 MB | 1 年前3
 Hello 算法 1.0.0b2 C++版12.2.3. Docker 部署 你可以使用 Docker 来部署本项目。稍等片刻,即可使用浏览器打开 http://localhost:8000 访问本项目。 git clone https://github.com/krahets/hello-algo.git cd hello-algo docker-compose up -d 使用以下命令即可删除部署。 docker-compose0 码力 | 197 页 | 15.72 MB | 1 年前3 Hello 算法 1.0.0b2 C++版12.2.3. Docker 部署 你可以使用 Docker 来部署本项目。稍等片刻,即可使用浏览器打开 http://localhost:8000 访问本项目。 git clone https://github.com/krahets/hello-algo.git cd hello-algo docker-compose up -d 使用以下命令即可删除部署。 docker-compose0 码力 | 197 页 | 15.72 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 11 现代 CMake 进阶指南保证了跨平台统一性 。 在自己的项目中,我推荐全部用对象库 (OBJECT) 替代静态库 (STATIC) 避免跨平台的麻烦 。 对象库仅仅作为组织代码的方式,而实际生成的可执行文件只有一个,减轻了部署的困难。 静态库的麻烦: GCC 编译器自作聪明,会自动剔除没有引用符号的那些对 象 对象库可以绕开编译器的不统一:保证不会自动剔除没引用到的对象文件 虽然动态库也可以避免剔除没引用的对象文件,但引入了运行时链接的麻烦0 码力 | 166 页 | 6.54 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 11 现代 CMake 进阶指南保证了跨平台统一性 。 在自己的项目中,我推荐全部用对象库 (OBJECT) 替代静态库 (STATIC) 避免跨平台的麻烦 。 对象库仅仅作为组织代码的方式,而实际生成的可执行文件只有一个,减轻了部署的困难。 静态库的麻烦: GCC 编译器自作聪明,会自动剔除没有引用符号的那些对 象 对象库可以绕开编译器的不统一:保证不会自动剔除没引用到的对象文件 虽然动态库也可以避免剔除没引用的对象文件,但引入了运行时链接的麻烦0 码力 | 166 页 | 6.54 MB | 1 年前3
 Hello 算法 1.0.0b4 C++版request”按钮即可发起拉取请求。 16.2.3. Docker 部署 执行以下 Docker 脚本,稍等片刻,即可在网页 http://localhost:8000 访问本项目。 git clone https://github.com/krahets/hello-algo.git cd hello-algo docker-compose up -d 使用以下命令即可删除部署。 docker-compose down0 码力 | 343 页 | 27.39 MB | 1 年前3 Hello 算法 1.0.0b4 C++版request”按钮即可发起拉取请求。 16.2.3. Docker 部署 执行以下 Docker 脚本,稍等片刻,即可在网页 http://localhost:8000 访问本项目。 git clone https://github.com/krahets/hello-algo.git cd hello-algo docker-compose up -d 使用以下命令即可删除部署。 docker-compose down0 码力 | 343 页 | 27.39 MB | 1 年前3
 Hello 算法 1.1.0 C++ 版request”按钮即可发起拉取请求。 第 16 章 附录 hello‑algo.com 367 3. Docker 部署 在 hello-algo 根目录下,执行以下 Docker 脚本,即可在 http://localhost:8000 访问本项目: docker-compose up -d 使用以下命令即可删除部署: docker-compose down 16.3 术语表 表 16‑1 列出了书中出现的重要术语,值得注意以下几点。0 码力 | 379 页 | 18.47 MB | 1 年前3 Hello 算法 1.1.0 C++ 版request”按钮即可发起拉取请求。 第 16 章 附录 hello‑algo.com 367 3. Docker 部署 在 hello-algo 根目录下,执行以下 Docker 脚本,即可在 http://localhost:8000 访问本项目: docker-compose up -d 使用以下命令即可删除部署: docker-compose down 16.3 术语表 表 16‑1 列出了书中出现的重要术语,值得注意以下几点。0 码力 | 379 页 | 18.47 MB | 1 年前3
共 14 条
- 1
- 2













