3 funky strategies to make youp NativeSeript apps smarter!3 funky strategies to make youp NativeSeript apps smarter!0 码力 | 47 页 | 12.61 MB | 1 年前3
C++23: An Overview of Almost All New and Updated Features3 Marc Grégoire Belgium Software architect / project manager for Nikon Metrology marc.gregoire@nuonsoft.com Microsoft VC++ MVP Since 2007 Author of Professional C++, 2nd, 3rd, 4th, and helper methods Cumbersome C++23: Explicit object parameters deducing this Replace all 3 overloads with: templateauto&& GetName(this Self&& self) { return std::forward (self) _1_2_or_3) { switch (number_that_is_only_0_1_2_or_3) { case 0: case 2: handle_0_or_2(); break; case 1: handle_1(); break; case 3: handle_3(); break; 0 码力 | 105 页 | 759.96 KB | 6 月前3
C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel 你醒啦?免费午餐结束了! 指望靠单核性能的增长带来程序性 能提升的时代一去不复返了,现在 要我们动动手为多核优化一下老的 程序,才能搭上摩尔定律的顺风车 。 神话与现实: 2 * 3GHz < 6GHz • 一个由双核组成的 3GHz 的 CPU 实际上提供了 6GHz 的处理能力,是吗? • 显然不是。甚至在两个处理器上同时运行两个线程也不见得可以获得两倍的性能。相似的 ,大多数多线程的应用不会 parallel_for 基于迭代器区间: parallel_for_each 二维区间上的 for 循环: blocked_range2d 三维区间上的 for 循环: blocked_range3d 所有区间类型 第 2 章:缩并与扫描 缩并( reduce ) 1 个线程,依次处理 8 个元素的缩并,花了 7 秒 用电量: 1*7=7 度电 总用时: 1*7=7 秒 结论:串行缩并的时间复杂度为0 码力 | 116 页 | 15.85 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串课程安排 1. vector 容器初体验 & 迭代器入门 (BV1qF411T7sd) 2. 你所不知道的 set 容器 & 迭代器分类 (BV1m34y157wb) 3. string , string_view , const char * 的爱恨纠葛 ( 本期 ) 4. 万能的 map 容器全家桶及其妙用举例 5. 函子 functor 函数内部在运行时处理了 % 的下一个字符。 • % 就像你和同学随手“拉钩”定下的约定,这是 printf 约定俗成的。 • \ 就像正式合同,有法律效力的,这是 C 语言编译器规定好的。 C++ 字符串类 第 3 章 C 语言字符串操作繁琐 封装的 std::string 应运而生 封装的 std::string 应运而生 • string 可以从 const char * 隐式构造: • string len; • 第二个成员用来确定结尾的位置,不需要 ‘ \0’ 结尾。 • 因此 string 类从 C 字符串构造时,可以额外指定一个长度: • string(“hello”, 3) 会得到 “ hel” • ↑ len 为 3 , ptr 指向 ’ h’ ,只保留前三个字符 • string(“hello”, 12) 会得到 “ hello\0[ 数据删除 ]” • ↑ len 为 12 , ptr0 码力 | 162 页 | 40.20 MB | 1 年前3
whats new in visual studiocreation of the C++ Standards 2. by investing in the Microsoft Visual C++ (MSVC) Compiler & Libraries 3. by simplifying acquisition in C++ via vcpkg 4. by improving the Visual Studio IDE 5. by continuing Studio Code Julia Reid – _3 Visual Studio CppCon 2020 Visual Studio 2019 Preview 3 Preview 4 Preview 5 Preview 6 Version 16.8 Preview 1 Preview 2 Preview 3 Preview 4 Preview 5 Version Preview 3 Preview 4 Version 16.10 Preview 1 Preview 2 Preview 3 Version 16.11 CppCon 2020 Sep 2020 Aug 2021 May 2021 Mar 2021 Nov 2020 Visual Studio 2022 Preview 1 Preview 2 Preview 3 Preview0 码力 | 42 页 | 19.02 MB | 6 月前3
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器com/video/BV1qF411T7sd 课程安排 1. vector 容器初体验 & 迭代器入门 (BV1qF411T7sd) 2. 你所不知道的 set 容器 & 迭代器分类 ( 本期 ) 3. string , string_view , const char * 的爱恨纠葛 4. 万能的 map 容器全家桶及其妙用举例 5. 函子 functor 与 lambda 表达式知多少 6. 通过实战案例来学习 都是能存储一连串数据的容器 。 • 区别 1 : set 会自动给其中的 元素从小到大排序,而 vector 会保持插入时的顺序。 • 区别 2 : set 会把重复的元素 去除,只保留一个,即去重。 • 区别 3 : vector 中的元素在内 存中是连续的,可以高效地按 索引随机访问, set 则不行。 • 区别 4 : set 中的元素可以高 效地按值查找,而 vector 则 低效。 set 的排序: 是不连续的,所以不能随机访 问,只能顺序访问。 • 所以这里调用 b.begin() + 3 ,就出错了。 多次调用 ++ 实现 + 同样效果 • set 迭代器没有重载 + 运算 符,因为他不是随机迭代器 。 • 那如果我确实需要让 set 迭 代器向前移动 3 格怎么办? • 可以调用三次 ++ 运算,实 现和 + 3 同样的效果。 • vector 迭代器的 + n 复杂度 是 O(1)0 码力 | 83 页 | 10.23 MB | 1 年前3
A Crash Course in Calendars, Dates, Time, and Time Zonesarchitect for Nikon Metrology Microsoft VC++ MVP Since 2007 Author of Professional C++, 2nd, 3rd, 4th, and 5th Edition Co-author of C++ Standard Library Quick Reference& C++17 Standard Library ratio<60>> d2; Duration with ticks of a sixtieth of a second: duration> d3; Use of predefined SI rational constants: duration d4;12 Durations – Operations duration > d3 { 10 }; // = 10 minutes duration > d4 { 14 }; // = 14 seconds // Compare durations. if (d3 > d4) { cout << "d3 > d4"; } else { cout << "d3 <= d4"; }13 Durations 0 码力 | 43 页 | 551.60 KB | 6 月前3
Zadig 面向开发者的云原生 DevOps 平台9 月 2021 年 11 月 2021 年 12 月 1 个月功能改造 90% 功能实现开源 技术社区雏形搭建 2022 年 3 月 生态伙伴工具 + Zadig Zadig 企业交付案例场景深化 开 发 者 场 景 挖 掘 3-5 个领域敏感型场景 建立产品发展委员会 贡献者流程优化 2022 年 9 月 场 景 深 化 能 力 增 强 Helm/K8s 安全建设缺乏时机和抓手 • 出现问题,影响业务进度 前置安全服务:全流程嵌入安全检测,避免流入业务环节。 全流程安全门禁:关键环节设置安全门禁,快速反馈研发改进 故障拦截率提升 1-3 倍 业务响应效率提升 3-5 倍 全流程安全建设 更多价值体现 组织 靠流程和个人,效率越来越低 • 低人效 / 低质量 / 低效率 / 高成本 • 人淹没在系统的海洋里 • 无数平台手工切换 靠系统和技术,能力长在平台上 有 云 、 离 线 环 境 的 产 品 发 布 、 许 可 和 支 持 的 管 理 产品各版本功能差异 基础版注重工程师体验,专家版保障稳定可靠高效发布;企业版安全发布、数据运营及企业扩展定制 3 Zadig 平台工程模式及 应用场景、架构解析 开发者自服务 • 通过自服务的方式来加快发布速 度,无需与运维持续沟通 降低个人心智负担 • 通过平台工程,将底层的复杂性 抽象化,降低个人心智负担,提0 码力 | 59 页 | 81.43 MB | 1 年前3
Secure your microservices with istio step by stepblack stars ● Reviews-v3 ○ calls ratings, red stars Initializing services 1) Deploy bookinfo services with istio sidecar without reviews-v2 2) Deploy bookinfo gateway 3) Deploy reviews-v2 service services 1) Deploy bookinfo services with istio sidecar without reviews-v2 2) Deploy bookinfo gateway 3) Deploy reviews-v2 service without istio sidecar ( kubectl label namespace default istio-injection=disabled/enabled access reviews-v1, reviews-v2 and reviews-v3 Access productpage #IstioCon Istio Identity Istiod Istio Agent Envoy 1. Start Envoy 2. Request Cert (SDS)) 3. CSR Auth: JWT 4. Cert signed with SPIFFE0 码力 | 34 页 | 67.93 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化核且矢量化成功: 1 次浮点读写 ≈ 128 次浮点加 法 常见操作所花费的时间 • 图中加法 (add) 和乘法 (mul) 都指的整数。 • 区别是浮点的乘法和加法基本是一样速度。 • L1/2/3 read 和 Main RAM read 的时间指的是 读一个缓存行( 64 字节)所花费的时间。 • 根据计算: 125/64*4≈8 • 即从主内存读取一次 float 花费 8 个 cycle 只能装到三级缓存,就取决于三级缓存的带 宽。三级缓存也装不下,那就取决于主内存 的带宽了。 • 结论:要避免 mem-bound ,数据量尽量足 够小,如果能装的进缓存就高效了。 L2: 256 KB L3: 12 MB 缓存的工作机制:读 • 缓存中存储的数据结构: • struct CacheEntry { • bool valid; • uint64_t address; • 带来的矢量化 和缓存行预取等好处……就是随机索引比较麻烦。 结构体剥离: https://blog.csdn.net/qq_36287943/article/details/103601176 第 3 章:预取与直写 顺序访问与随机访问 • 随机访问的效率比顺序访问低的多。 • 其中一个原因当然是:随机访问只会访问到其中一个 float ,而这导致 他附近的 64 字节都被读取到缓存了,但实际只用到了其中0 码力 | 147 页 | 18.88 MB | 1 年前3
共 71 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8













