积分充值
 首页
前端开发
AngularDartElectronFlutterHTML/CSSJavaScriptReactSvelteTypeScriptVue.js构建工具
后端开发
.NetC#C++C语言DenoffmpegGoIdrisJavaJuliaKotlinLeanMakefilenimNode.jsPascalPHPPythonRISC-VRubyRustSwiftUML其它语言区块链开发测试微服务敏捷开发架构设计汇编语言
数据库
Apache DorisApache HBaseCassandraClickHouseFirebirdGreenplumMongoDBMySQLPieCloudDBPostgreSQLRedisSQLSQLiteTiDBVitess数据库中间件数据库工具数据库设计
系统运维
AndroidDevOpshttpdJenkinsLinuxPrometheusTraefikZabbix存储网络与安全
云计算&大数据
Apache APISIXApache FlinkApache KarafApache KyuubiApache OzonedaprDockerHadoopHarborIstioKubernetesOpenShiftPandasrancherRocketMQServerlessService MeshVirtualBoxVMWare云原生CNCF机器学习边缘计算
综合其他
BlenderGIMPKiCadKritaWeblate产品与服务人工智能亿图数据可视化版本控制笔试面试
文库资料
前端
AngularAnt DesignBabelBootstrapChart.jsCSS3EchartsElectronHighchartsHTML/CSSHTML5JavaScriptJerryScriptJestReactSassTypeScriptVue前端工具小程序
后端
.NETApacheC/C++C#CMakeCrystalDartDenoDjangoDubboErlangFastifyFlaskGinGoGoFrameGuzzleIrisJavaJuliaLispLLVMLuaMatplotlibMicronautnimNode.jsPerlPHPPythonQtRPCRubyRustR语言ScalaShellVlangwasmYewZephirZig算法
移动端
AndroidAPP工具FlutterFramework7HarmonyHippyIoniciOSkotlinNativeObject-CPWAReactSwiftuni-appWeex
数据库
ApacheArangoDBCassandraClickHouseCouchDBCrateDBDB2DocumentDBDorisDragonflyDBEdgeDBetcdFirebirdGaussDBGraphGreenPlumHStreamDBHugeGraphimmudbIndexedDBInfluxDBIoTDBKey-ValueKitDBLevelDBM3DBMatrixOneMilvusMongoDBMySQLNavicatNebulaNewSQLNoSQLOceanBaseOpenTSDBOracleOrientDBPostgreSQLPrestoDBQuestDBRedisRocksDBSequoiaDBServerSkytableSQLSQLiteTiDBTiKVTimescaleDBYugabyteDB关系型数据库数据库数据库ORM数据库中间件数据库工具时序数据库
云计算&大数据
ActiveMQAerakiAgentAlluxioAntreaApacheApache APISIXAPISIXBFEBitBookKeeperChaosChoerodonCiliumCloudStackConsulDaprDataEaseDC/OSDockerDrillDruidElasticJobElasticSearchEnvoyErdaFlinkFluentGrafanaHadoopHarborHelmHudiInLongKafkaKnativeKongKubeCubeKubeEdgeKubeflowKubeOperatorKubernetesKubeSphereKubeVelaKumaKylinLibcloudLinkerdLonghornMeiliSearchMeshNacosNATSOKDOpenOpenEBSOpenKruiseOpenPitrixOpenSearchOpenStackOpenTracingOzonePaddlePaddlePolicyPulsarPyTorchRainbondRancherRediSearchScikit-learnServerlessShardingSphereShenYuSparkStormSupersetXuperChainZadig云原生CNCF人工智能区块链数据挖掘机器学习深度学习算法工程边缘计算
UI&美工&设计
BlenderKritaSketchUI设计
网络&系统&运维
AnsibleApacheAWKCeleryCephCI/CDCurveDevOpsGoCDHAProxyIstioJenkinsJumpServerLinuxMacNginxOpenRestyPrometheusServertraefikTrafficUnixWindowsZabbixZipkin安全防护系统内核网络运维监控
综合其它
文章资讯
 上传文档  发布文章  登录账户
IT文库
  • 综合
  • 文档
  • 文章

无数据

分类

全部后端开发(15)C++(13)数据库(1)Go(1)MySQL(1)Rust(1)

语言

全部中文(简体)(15)中文(简体)(1)

格式

全部PPT文档 PPT(16)
 
本次搜索耗时 0.017 秒,为您找到相关结果约 16 个.
  • 全部
  • 后端开发
  • C++
  • 数据库
  • Go
  • MySQL
  • Rust
  • 全部
  • 中文(简体)
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • ppt文档 C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器

    second;// V 类型 map 的遍历:用 C++17 range-based loop • 和 vector 等 STL 容器一样, map 也支持 C++17 的 range-based loop 语法进行遍历 。 • for (auto tmp: m) • 由于刚刚说了, map 真正的“元素类型”是 K-V 对,所以这里的 auto 如果不省略应该是 : • for (pair语法糖,他和 range-based loop 可以配合着 用。 • for (auto [k, v]: m) { • print(k, v); } • auto [k, v] 这个就是 structural-binding ,我们第三课讲 tuple 时就介绍过了。 • 本来是要再写一行 auto [k, v] = tmp 的,但是 C++17 开恩,允许两个语法糖一起 这里说的指针,不光是 T * 指针,还包括 T & 引用, iterator 迭代器,他们都是指针的 变体。 • 而 structural-binding 和 range-based loop 语法支持引用,也非常简单: • for (auto &[k, v]: m) { • v = v2; // 引用比指针还方便,自动解引用。此处等价于迭代器版的 (*it).second = v2;
    0 码力 | 90 页 | 8.76 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起

    )。 • 但坏处也很明显: 1. make 在 Unix 类系统上是通用的,但在 Windows 则不然。 2. 需要准确地指明每个项目之间的依赖关系,有头文件时特别头疼。 3. make 的语法非常简单,不像 shell 或 python 可以做很多判断等。 4. 不同的编译器有不同的 flag 规则,为 g++ 准备的参数可能对 MSVC 不适用。 构建系统的构建系统( CMake ) 需要准确地指明每个项目之间的依赖关系,有头文件时特别头疼。 • CMake 可以自动检测源文件和头文件之间的依赖关系,导出到 Makefile 里。 • make 的语法非常简单,不像 shell 或 python 可以做很多判断等。 • CMake 具有相对高级的语法,内置的函数能够处理 configure , install 等常见需求。 • 不同的编译器有不同的 flag 规则,为 g++ 准备的参数可能对 编译时插入 CMake 中的静态库与动态库 • CMake 除了 add_executable 可以生成可执行文件外,还可以通过 add_library 生成库 文件。 • add_library 的语法与 add_executable 大致相同,除了他需要指定是动态库还是静态库: • add_library(test STATIC source1.cpp source2.cpp) # 生成静态库
    0 码力 | 32 页 | 11.40 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程

    https://www.nvidia.cn/docs/IO/51635/NVIDIA_CUDA_Programming_Guide_1.1_chs.pdf CUDA 编译器兼容 C++17 • CUDA 的语法,基本完全兼容 C++ 。包括 C+ +17 新特性,都可以用。甚至可以把任何一个 C++ 项目的文件后缀名全部改成 .cu ,都能编 译出来。 • 这是 CUDA 的一大好处, CUDA __global__ 修 饰符,即可让他在 GPU 上执行。 • 不过调用 kernel 时,不能直接 kernel() ,而 是要用 kernel<<<1, 1>>>() 这样的三重尖括 号语法。为什么?这里面的两个 1 有什么用 ?稍后会说明。 • 运行以后,就会在 GPU 上执行 printf 了。 • 这里的 kernel 函数在 GPU 上执行,称为核 函数,用 __global__ 能够在 main 退出前等到 kernel 在 GPU 上执行完。 定义在 GPU 上的设备函数 • __global__ 用于定义核函数,他在 GPU 上执行,从 CPU 端通过三重尖括号语法调 用,可以有参数,不可以有返回值。 • 而 __device__ 则用于定义设备函数,他在 GPU 上执行,但是从 GPU 上调用的,而 且不需要三重尖括号,和普通函数用起来一 样,可以有参数,有返回值。
    0 码力 | 142 页 | 13.52 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理

    陷阱解决方案) • 不过我们可以手动指定初始化 weight 为 0 。 • 通过 {} 语法指定的初始化值,会在编译器自 动生成的构造函数里执行。 编译器默认生成的构造函数:无参数( POD 陷阱解决方案,续) • 不过我们可以手动指定初始化 weight 为 0 。 • 通过 {} 语法指定的初始化值,不仅会在编译 器自动生成的构造函数里执行,也会用户自定 义构造函数里执行! m_weight 。 有自定义构造函数时仍想用默认构造函数: = default (续) • 如果还想让编译器自动生成默认的无参构造函数,可以用 C++11 新增的这个语法: 不过,据我所知,初始化列表 的那个构造函数就没办法通过 = default 语法恢复…… 编译器默认生成的构造函数:拷贝构造函数 • 除了无参和初始化列表构造函数外,编译器默认还会生成这样一个特殊的构造函数: • Pig(Pig 除了编译器可以自动生成拷贝构造函数外,如果有需要,用户也可以自定义拷贝构造函数 。 • 比如: 不想要编译器自动生成拷贝构造函数怎么办: = delete • 如果想要让编译器不要自动生成拷贝构造函数,可以用 = delete 语法删除: • 注: = delete 和 = default 是一对。如果你不确定某个函数有没有被编译器默认生成,可以都用 这两个显式地声明一下。 编译器默认生成的特殊函数:拷贝赋值函数 •
    0 码力 | 96 页 | 16.28 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串

    字符了(多余的部分实际上被用于表示 中文)。 • char 和整数无异,例如 ‘ a’ 实际上会被编译器翻译成他对应的 ASCII 码: 97 。写 ‘ a’ 和写 (char)97 是完全一样的,方便阅读的语法糖而已。 “char 即整数”思想应用举例 “char 即整数”思想应用举例 C 语言帮手函数 帮手函数大全 • isupper(c) 判断是否为大写字母(‘ A’ <= c && c <= 语言中的字符串 • 正如 ‘ h’ 是个语法糖,等价于 h 的 ASCII 码——整数 104 。 • “hello” 也是个语法糖,他等价于数组 {‘h’, ‘e’, ‘l’, ‘l’, ‘o’, 0} 。 C 语言字符串的特点 • 正如 ‘ h’ 是个语法糖,等价于 h 的 ASCII 码——整数 104 。 • “hello” 也是个语法糖,他等价于数组 {‘h’, ‘e’, 间。 • Linux 则没有分两个版本,会根据环境变量 LANG 和 LC_ALL 的值来动态 决定采用哪种编码格式和语言。 C++ 中对各大编码格式的支持 字符类型 字符串类型 字符串常量语法 大小(字节) 编码格式 char string " 字符 " 1 随系统默认编码格式而变 wchar_t ( Linux ) wstring L" 字符 " 4 UTF-32 wchar_t
    0 码力 | 162 页 | 40.20 MB | 1 年前
    3
  • ppt文档 Go读书会第二期

    项目基础:布局、代码风格与命名 践行哲学,遵循惯例,认清本质,理解原理 每个 gopher 在开启一个 go 项目时都要考虑的事情 • Go 项目布局 • 代码风格 • 命名惯例 Part3 – 语法基础:声明、类型、语句与控制结构 践行哲学,遵循惯例,认清本质,理解原理 • 一致的变量声明形式 • 无类型常量与 iota 的应用 • 定义零值可用的类型 • 通过复合字面值的初始化 • 代码块与作用域 • 控制语句的惯用法与坑 Part4 – 语法基础:函数与方法 践行哲学,遵循惯例,认清本质,理解原理 • Init 函数 • 成为“一等公民” • defer 的惯用法与坑 • 变长参数函数妙用 • 方法的本质、 receiver 参数类型选择、方法集 合 Go 程序逻辑的基本承载单元 Part5 – 语法核心:接口 践行哲学,遵循惯例,认清本质,理解原理 • • 接口的内部表示 • 接口设计 • 接口与组合 接口:一切皆组合 Part6 – 语法核心:并发编程 践行哲学,遵循惯例,认清本质,理解原理 • 并发设计 vs. 并行设计 • 并发原语的原理与应用模式 • 低级同步原语 (sync 和 atomic) 并发:优先考虑并发设计 Part7 – 错误处理 践行哲学,遵循惯例,认清本质,理解原理 • 错误处理的几种策略 • 优化
    0 码力 | 26 页 | 4.55 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程

    后者其实在编译器看来就是 • if (false) std::cout << ... • 这样显然是会被他自动优化掉的。 模板的应用:编译期分支 • 更进一步,可以用 C++17 的 if constexpr 语法,保证是编译期确定的分支: • (下一讲会深入分析编译器的工作原理) 模板的难题:编译期常量的限制 • 编译期常量的限制就在于他不能通过运行时变量组成的表达式来指定。比如: • 这里在 if 类型编译一遍,从而允许编译器更好 地进行自动适配与优化。 函数式编程: lambda 表达式 • C++11 引入的 lambda 表达式允许我们 在函数体内创建一个函数,大大地方便了 函数式编程。 • 语法就是先一个空的 [] ,然后是参数列表 ,然后是 {} 包裹的函数体。 • 再也不用被迫添加一个全局函数了! lambda 表达式:返回类型 • lambda 表达式的返回类型写在参数列表 牺牲性能但存储方便: std::function 容器。 4. lambda 作为参数:通常用 [&] 存储引用。 5. lambda 作为返回值:总是用 [=] 存储值。 • 其实 lambda 还有更多语法,比如 mutable , [p = std::move(p)] 等…… 常用容器: tuple • std::tuple<...> 可以将多个不同类型的 值打包成一个。尖括号里填各个元素 的类型。
    0 码力 | 82 页 | 12.15 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针

    的数据类型(但凡是多个字节组成的)必须是大端字节序。 假如 x=0x01234567 ,则: int 类型对应的指针类型: int* • 指针,顾名思义,就是“指向”一个内存中的变量。 • 语法规定:任何类型 T 所对应的指针类型是 T* 。 • 可以通过 & 运算符获取一个变量的指针(地址) 。 • 可以通过 * 运算符访问指针指向的变量(左值) 。 • 因此指针指向了变量,通过指针的 同理还有三级指针 int*** ,四级指针 int**** ,以此类推。 • C 语言有 int* 这种指针类型, C++ 中还新增了 int& 这种引用类型。引用和指针是一样 的,只是包装了一层语法糖,唯二的区别是:他不需要手动写 & 和 * 运算符;他的拷贝 是导致他指向的值拷贝,而不是对门牌号的拷贝。 • 但是 C++ 的 int&& 并不是二级指针,而是右值引用,之后的课里会讲到。 实验:你的电脑是大端还是小端? 可以代表空指针,为什么要 这样规定?这样不是很容易出错吗? • 因为如果用 (void*)0 表示空指针,会让下面这个语 句编译出错: int* p = (void*)0 • 因为 C++ 的语法比 C 语言严格,他不允许 void 指针转换成 int ,因此老的定义是不能用的,所以才 额外规定 0 才是空指针。 用 0 代替 NULL ,这样也可以? • 因此 C++ 中你可以用
    0 码力 | 128 页 | 2.95 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    译器会放弃优化对他的读写操作 。 做性能实验的时候非常有用。 注意一下区别 1. volatile int *a 或 int volatile *a 2. int *__restrict a • 语法上区别: volatile 在 * 前面而 __restrict 在 * 后面。 • 功能上区别: volatile 是禁用优化, __restrict 是帮助优化。 • 是否属于标准上区别: 字节大小,矢量化反而成功了?? 结论:计算机喜欢 2 的整数幂, 2, 4, 8, 16, 32, 64, 128... 结构体大小若不是 2 的整数幂,往往会导致 SIMD 优化失 败。 C++11 新语法: alignas 在 struct 后加上 alignas( 要对齐到的字节数 ) 即可实现同样效 果,就不需要手动写 padding 变量了。 那是不是所有结构体打上 alignas(16) 解决方案: pragma omp simd 或 pragma GCC ivdep C/C++ 的缺点:指针的自由度过高,允许多个 immutable reference 指向同一个对象,而 Rust 从语法层面禁止,从而让编译器放心大胆 优化。 为什么标准委员会不改进一下?因为一旦放弃 兼容,就等于抛弃所有历史遗产的全新语言, 就和 Rust 无异,从而没有任何理由再学习 C++ 。 std::vector
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    find_package 找到的库文件位置等信息,储存起来。 这样下次执行 find_package 时,就会利用上次缓存的变量,直接返回。 避免重复执行 cmake -B 时速度变慢的问题。 设置缓存变量 语法是: set( 变量名 “变量值” CACHE 变量类型 “注释” ) 缓存的 myvar 会出现在 build/CMakeCache.txt 里 常见问题:我修改了 CMakeLists.txt 使用生成器表达式,简化成一条指令 https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html#genex:PLATFORM_ID 语法: $<$< 类型 : 值 >: 为真时的表达式 > 比如 $<$:MY_NAME=”Bill Gates”> 在 Windows 平台上会变为 MY_NAME=”Bill https://cmake.org/cmake/help/v3.7/command/if.html if 的特点:不需要加 ${} ,会自动尝试作为变量名求值 由于历史原因, if 的括号中有着特殊的语法,如果是一个字符串,比如 MYVAR ,则他会先 看是否有 ${MYVAR} 这个变量。如果有这个变量则会被替换为变量的值来进行接下来的比较, 否则保持原来字符串不变。 如果我加了 ${} 会怎么样呢?
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
共 16 条
  • 1
  • 2
前往
页
相关搜索词
C++高性性能高性能并行编程优化课件1701080215gogolang03120411
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩