积分充值
 首页
前端开发
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文库
  • 综合
  • 文档
  • 文章

无数据

分类

全部后端开发(23)C++(23)

语言

全部中文(简体)(23)

格式

全部PPT文档 PPT(14)PDF文档 PDF(9)
 
本次搜索耗时 0.093 秒,为您找到相关结果约 23 个.
  • 全部
  • 后端开发
  • C++
  • 全部
  • 中文(简体)
  • 全部
  • PPT文档 PPT
  • PDF文档 PDF
  • 默认排序
  • 最新排序
  • 页数排序
  • 大小排序
  • 全部时间
  • 最近一天
  • 最近一周
  • 最近一个月
  • 最近三个月
  • 最近半年
  • 最近一年
  • ppt文档 C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理

    format 支持 跑远了! • 鉴于 C++20 还没有普遍落地(例如 CMake 不支持 C++20 modules )因此我们的课程 基于 C++17 标准,有时会谈到 C++20 作为扩展阅读。 C++ 有哪些面向对象思想? C++ 思想:封装 比如要表达一个数组,需要:起始地址指针 v ,数组大小 nv 将多个逻辑上相关的变量包装成一个类 因此 C++ 的 vector 将他俩打包起来,避免程序员犯错 陷阱解决方案) • 不过我们可以手动指定初始化 weight 为 0 。 • 通过 {} 语法指定的初始化值,会在编译器自 动生成的构造函数里执行。 编译器默认生成的构造函数:无参数( POD 陷阱解决方案,续) • 不过我们可以手动指定初始化 weight 为 0 。 • 通过 {} 语法指定的初始化值,不仅会在编译 器自动生成的构造函数里执行,也会用户自定 义构造函数里执行! m_weight 。 有自定义构造函数时仍想用默认构造函数: = default (续) • 如果还想让编译器自动生成默认的无参构造函数,可以用 C++11 新增的这个语法: 不过,据我所知,初始化列表 的那个构造函数就没办法通过 = default 语法恢复…… 编译器默认生成的构造函数:拷贝构造函数 • 除了无参和初始化列表构造函数外,编译器默认还会生成这样一个特殊的构造函数: • Pig(Pig
    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’, std::string 其实是同等 地位的。 • 虽然也可以给 std::string 定义很多个不同的 + 重载,每个针对不同的数字类 型( int 、 float 、 double )排列组合,但是这样没有可扩展性,而且影响编 译速度。 • 所以 cpp 说,你必须手动把 42 先转换为字符串,然后再和已有的字符串相 加: • “you have ” + std::to_string(42) + “ yuan”
    0 码力 | 162 页 | 40.20 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针

    48 位一致(符号扩展),也就是虚拟地址空间只有 48 位。 • 而经过 MMU 映射后实际给内存的地址只有 39 位,因此如今的 x64 架构实际上只能访 问 512GB 内存,如果插了超过这个大小的内存条他也不会认出来。 • 此外, 16 位计算机实际上能通过额外的段寄存器访问到 20 位的内存地址( 1MB )。 • 32 位计算机还能通过 PAE 技术(物理地址扩展)访问到 36 位的内存地址( 实验:不同大小之间的整数互转 • C 语言可以用 (short)x 的形式来强制把任意类型的 x 转换为 short 类型。 • 如果源类型比目的类型小,那么会根据目的类型是有 符号还是无符号的,自动扩展他的符号位。 • 例如 char 类型的 -128 是 10000000 • 强制转换为 short 后是 11111111 10000000 • 可见符号位被完全填充到了 short 的前一个字节,这 的数据类型(但凡是多个字节组成的)必须是大端字节序。 假如 x=0x01234567 ,则: int 类型对应的指针类型: int* • 指针,顾名思义,就是“指向”一个内存中的变量。 • 语法规定:任何类型 T 所对应的指针类型是 T* 。 • 可以通过 & 运算符获取一个变量的指针(地址) 。 • 可以通过 * 运算符访问指针指向的变量(左值) 。 • 因此指针指向了变量,通过指针的
    0 码力 | 128 页 | 2.95 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南

    另一种方式:先创建目标,稍后再添加源文件 如果有多个源文件呢? 逐个添加即可 使用变量来存储 建议把头文件也加上,这样在 VS 里可以出现在“ Header Files” 一栏 使用 GLOB 自动查找当前目录下指定扩展名的文件,实现批量添加源文件 启用 CONFIGURE_DEPENDS 选项,当添加新文件时,自动更新变量 如果源码放在子文件夹里怎么办? 必须把路径名和后缀名的排列组合全部写出来吗?感觉好麻烦 标准: CMAKE_CXX_STANDARD 变量 • CMAKE_CXX_EXTENSIONS 也是 BOOL 类型,默认为 ON 。设为 ON 表示启用 GCC 特有的一些扩展功能; OFF 则关闭 GCC 的扩展功能,只使用标准的 C++ 。 • 要兼容其他编译器(如 MSVC )的项目,都会设为 OFF 防止不小心用了 GCC 才有的 特性。 • 此外,最好是在 project 指令前设置 find_package 找到的库文件位置等信息,储存起来。 这样下次执行 find_package 时,就会利用上次缓存的变量,直接返回。 避免重复执行 cmake -B 时速度变慢的问题。 设置缓存变量 语法是: set( 变量名 “变量值” CACHE 变量类型 “注释” ) 缓存的 myvar 会出现在 build/CMakeCache.txt 里 常见问题:我修改了 CMakeLists.txt
    0 码力 | 166 页 | 6.54 MB | 1 年前
    3
  • pdf文档 《深入浅出MFC》2/e

    com 我是您的读者,虽然我尚未看完这本书,只看到第三篇的第5章,但我忍不住要把心得告诉 您。去年我因为想写Windows 程序而买您的书,说老实话,我实在看不懂您所写的文字(我 真的懂C++ 语法,也用Visual Basic 写过Windows 程序),故放弃改买其它书籍来学习。 虽把那些书全部看完了,也利用MFC 来写简单程序,但心里仍搞不懂这些程序的How、 What、Why。后来 RC 编译器整合为一个完整的EXE 文件(图1-1)。所谓UI 资源是指功能菜单、对话框 外貌、程序图标、光标形状等等东西。这些UI 资源的实际内容(二进制代码)系借助各 种工具产生,并以各种扩展名存在,如.ico、.bmp、.cur 等等。程序员必须在一个所谓 的资源描述档(.rc)中描述它们。RC 编译器(RC.EXE)读取RC 档的描述后将所有UI 资源档集中制作出一个.RES 档 应用程序的本体与操作系统之间的关系。Win32 程序中最 具代表意义的动作已经在该图显示出来,完整的程序代码展示于后。本章后续讨论都围绕 着此一程序。 稍后会出现一个makefile。关于makefile 的语法,可能已经不再为大家所熟悉了。我想 我有必要做个说明。 所谓makefile,就是让你能够设定某个文件和某个文件相比-- 比较其产生日期。由其比 较结果来决定要不要做某些你所指定的动作。例如:
    0 码力 | 1009 页 | 11.08 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化

    *)(rdi + rsi * 4) size_t 在 64 位系统上相当于 uint64_t size_t 在 32 位系统上相当于 uint32_t 从而不需要用 movslq 从 32 位符号扩展 到 64 位,更高效。而且也能处理数组大 小超过 INT_MAX 的情况,推荐始终用 size_t 表示数组大小和索引。 浮点作为参数和返回: xmm 系列寄存器 xmm0 = xmm0 + 译器会放弃优化对他的读写操作 。 做性能实验的时候非常有用。 注意一下区别 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)
    0 码力 | 108 页 | 9.47 MB | 1 年前
    3
  • pdf文档 现代C++ 教程:高速上手C++11/14/17/20

    从输出中我们可以看出,NULL 不同于 0 与 nullptr。所以,请养成直接使用 nullptr 的习惯。 此外,在上面的代码中,我们使用了 decltype 和 std::is_same 这两个属于现代 C++ 的语法,简 单来说,decltype 用于类型推导,而 std::is_same 用于比较两个类型是否相同,我们会在后面decltype 一节中详细讨论。 constexpr C++ 本身已经具备了常量表达式的概念,比如 ++it) vec.push_back(*it); } 17 2.3 类型推导 第 2 章语言可用性的强化 magicFoo.foo({6,7,8,9}); 其次,C++11 还提供了统一的语法来初始化任意的对象,例如: Foo foo2 {3, 4}; 结构化绑定 结构化绑定提供了类似其他语言中提供的多返回值的功能。在容器一章中,我们会学到 C++11 新 增了 std::tuple 编译的代码中遇到了被完整定义的模板,都会实例化。这就产生了重复实例化而导致的编译时间的增加。 并且,我们没有办法通知编译器不要触发模板的实例化。 为此,C++11 引入了外部模板,扩充了原来的强制编译器在特定位置实例化模板的语法,使我们能 够显式的通知编译器何时进行模板的实例化: template class std::vector; // 强行实例化 extern template class std::vector;
    0 码力 | 83 页 | 2.42 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming

    bool 转换成 int 类型( movzx 把 1 字节的 al 转换成 4 字节的 eax ,零扩展:高 3 字节 填充零) • 返回类型 int 占据 4 字节( eax 寄存器就是 4 字节的) • 返回值都放 eax 寄存器(刚刚算得的就在 eax ,直接返 回) 无分支优化:从语法角度分析 • 刚刚其实是利用了 C 语言把 bool 类型的 true 当做 1 , false • 通过 virtual 关键字给类定义一个虚函数,他其实就是在类成员里加了一个函数指针。 • 而在构造函数里,会把当前类重载过的虚函数,赋予给那个函数指针,实现多态。 • 虚函数是 C++ 的语法糖,纯 C 的 Linux 内核中也用到多态,就是用函数指针实现的。 例如左图中的虚函数,和右边的函数指针版本等价。因此性能分析时,把虚函数视为函数 指针。 • 注:实际中虚函数往往有很多个,为
    0 码力 | 47 页 | 8.45 MB | 1 年前
    3
  • ppt文档 C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器

    就相当于让相等条件变成了 a[0] == b[0] 。也就是说只要第 一个字符相等就视为字符串相 等,所以 “ arch” 和 “ any” 会 被视为相等的元素,从而被 set 给去重了! • 扩展知识:其实, map 无非就是个只比较 K 无视 T 的 set> ,顺手还 加了一些方便的函数,比如 [] 和 at 。 set 和 vector 迭代器的共同点 iterator first; • bool second; • }; 使用 C++17 的结构化绑定来拆解 pair • C++17 提供了结构化绑定 (structual binding) 的语法, 可以取出一个 POD 结构体 的所有成员, pair 也不例外 。 • auto [ok, it] = b.insert(3); • 等价于 • auto tmp = b.insert(3);
    0 码力 | 83 页 | 10.23 MB | 1 年前
    3
  • 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
共 23 条
  • 1
  • 2
  • 3
前往
页
相关搜索词
C++高性性能高性能并行编程优化课件02151211深入深入浅出MFC04现代教程高速上手141720
IT文库
关于我们 文库协议 联系我们 意见反馈 免责声明
本站文档数据由用户上传或本站整理自互联网,不以营利为目的,供所有人免费下载和学习使用。如侵犯您的权益,请联系我们进行删除。
IT文库 ©1024 - 2025 | 站点地图
Powered By MOREDOC AI v3.3.0-beta.70
  • 关注我们的公众号【刻舟求荐】,给您不一样的精彩
    关注我们的公众号【刻舟求荐】,给您不一样的精彩