C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming的语法糖,纯 C 的 Linux 内核中也用到多态,就是用函数指针实现的。 例如左图中的虚函数,和右边的函数指针版本等价。因此性能分析时,把虚函数视为函数 指针。 • 注:实际中虚函数往往有很多个,为了存储空间的高效利用,会把多个虚函数打包成一个数组,称之 为“虚函数表( vtable )”。这样一来,类成员里只需要存一个指向虚函数表首地址的指针,之后通过 查找该表即可找到连续的 n 个函数指针。此处0 码力 | 47 页 | 8.45 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化4 个字节时,实际会导致 0x0040~0x0080 的 64 字节数据整个被读取到缓存中。 • 这就是为什么我们喜欢把数据结构的起始地址和大小对齐到 64 字节,为的是不要浪费缓存行的存储空间。 缓存的工作机制:写 • 缓存中存储的数据结构: • struct CacheEntry { • bool valid, dirty; • uint64_t address;0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程刚刚的线程升级为板块,刚刚的 for 升级为线程,然后把 刚刚 local_sum 这个线程局部数组升级为板块局部数组。 那么如何才能实现板块局部数组呢? • 同一个板块中的每个线程,都共享着一块存储空间,他就 是共享内存。在 CUDA 的语法中,共享内存可以通过定 义一个修饰了 __shared__ 的变量来创建。因此我们可以 把刚刚的 local_sum 声明为 __shared__ 就可以让他从0 码力 | 142 页 | 13.52 MB | 1 年前3
Hello 算法 1.0.0b4 C++版码 点相等。 ‧ UTF‑32 编码:每个字符都使用 4 个字节。这意味着 UTF‑32 会比 UTF‑8 和 UTF‑16 更占用空间,特 别是对于主要使用 ASCII 字符的文本。 从存储空间的角度看,使用 UTF‑8 表示英文字符非常高效,因为它仅需 1 个字节;使用 UTF‑16 编码某些非 英文字符(例如中文)会更加高效,因为它只需要 2 个字节,而 UTF‑8 可能需要 3 个字节。从兼容性的角度 各种语言的字 符,从而解决由于字符编码方法不一致而导致的乱码问题。 ‧ UTF‑8 是最受欢迎的 Unicode 编码方法,通用性非常好。它是一种变长的编码方法,具有很好的扩展 性,有效提升了存储空间的使用效率。UTF‑16 和 UTF‑32 是等长的编码方法。在编码中文时,UTF‑16 比 UTF‑8 的占用空间更小。Java, C# 等编程语言默认使用 UTF‑16 编码。 3.5.10 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 C++ 版Unicode 码点相等。 ‧ UTF‑32 编码:每个字符都使用 4 字节。这意味着 UTF‑32 比 UTF‑8 和 UTF‑16 更占用空间,特别是 对于 ASCII 字符占比较高的文本。 从存储空间占用的角度看,使用 UTF‑8 表示英文字符非常高效,因为它仅需 1 字节;使用 UTF‑16 编码某些 非英文字符(例如中文)会更加高效,因为它仅需 2 字节,而 UTF‑8 可能需要 3 字节。 种语言的字 符,从而解决由于字符编码方法不一致而导致的乱码问题。 ‧ UTF‑8 是最受欢迎的 Unicode 编码方法,通用性非常好。它是一种变长的编码方法,具有很好的扩展 性,有效提升了存储空间的使用效率。UTF‑16 和 UTF‑32 是等长的编码方法。在编码中文时,UTF‑16 占用的空间比 UTF‑8 更小。Java 和 C# 等编程语言默认使用 UTF‑16 编码。 2. Q0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 C++版4 个字节。这意味着 UTF‑32 会比 UTF‑8 和 UTF‑16 更占用空间,特 别是对于 ASCII 字符占比较高的文本。 第 3 章 数据结构 hello‑algo.com 61 从存储空间的角度看,使用 UTF‑8 表示英文字符非常高效,因为它仅需 1 个字节;使用 UTF‑16 编码某些非 英文字符(例如中文)会更加高效,因为它只需要 2 个字节,而 UTF‑8 可能需要 3 个字节。 种语言的字 符,从而解决由于字符编码方法不一致而导致的乱码问题。 ‧ UTF‑8 是最受欢迎的 Unicode 编码方法,通用性非常好。它是一种变长的编码方法,具有很好的扩展 性,有效提升了存储空间的使用效率。UTF‑16 和 UTF‑32 是等长的编码方法。在编码中文时,UTF‑16 比 UTF‑8 的占用空间更小。Java 和 C# 等编程语言默认使用 UTF‑16 编码。 2. Q0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 C++版Unicode 码点相等。 ‧ UTF‑32 编码:每个字符都使用 4 字节。这意味着 UTF‑32 比 UTF‑8 和 UTF‑16 更占用空间,特别是 对于 ASCII 字符占比较高的文本。 从存储空间占用的角度看,使用 UTF‑8 表示英文字符非常高效,因为它仅需 1 字节;使用 UTF‑16 编码某些 非英文字符(例如中文)会更加高效,因为它仅需 2 字节,而 UTF‑8 可能需要 3 字节。 种语言的字 符,从而解决由于字符编码方法不一致而导致的乱码问题。 ‧ UTF‑8 是最受欢迎的 Unicode 编码方法,通用性非常好。它是一种变长的编码方法,具有很好的扩展 性,有效提升了存储空间的使用效率。UTF‑16 和 UTF‑32 是等长的编码方法。在编码中文时,UTF‑16 占用的空间比 UTF‑8 更小。Java 和 C# 等编程语言默认使用 UTF‑16 编码。 2. Q0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版Unicode 码点相等。 ‧ UTF‑32 编码:每个字符都使用 4 字节。这意味着 UTF‑32 比 UTF‑8 和 UTF‑16 更占用空间,特别是 对于 ASCII 字符占比较高的文本。 从存储空间占用的角度看,使用 UTF‑8 表示英文字符非常高效,因为它仅需 1 字节;使用 UTF‑16 编码某些 非英文字符(例如中文)会更加高效,因为它仅需 2 字节,而 UTF‑8 可能需要 3 字节。 种语言的字 符,从而解决由于字符编码方法不一致而导致的乱码问题。 ‧ UTF‑8 是最受欢迎的 Unicode 编码方法,通用性非常好。它是一种变长的编码方法,具有很好的扩展 性,有效提升了存储空间的使用效率。UTF‑16 和 UTF‑32 是等长的编码方法。在编码中文时,UTF‑16 占用的空间比 UTF‑8 更小。Java 和 C# 等编程语言默认使用 UTF‑16 编码。 2. Q0 码力 | 379 页 | 18.48 MB | 10 月前3
共 8 条
- 1













