C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型从稀疏数据结构到量化数据类型 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 :每个占据 8 字节 • 如果用更大的数据类型,用时会直接提升两倍! • 这是因为 i % 2 的计算时间,完全隐藏在内存 的超高延迟里了。 • 可见,当数据量足够大,计算量却不多时,读写 数据量的大小唯一决定着你的性能。 • 特别是并行以后,计算量可以被并行加速,而访 存却不行。 使用 int8_t :每个占据 1 字节 • 因此我们可以把数据类型变小,这样所需的内存 量就变小,从而内存带宽也可以减小! 对于右边这种内存瓶颈的循环体,从 4 字节的 int 改成 int8_t ,理论上可以增加 4 倍速度! • 这就是量化数据类型的思想,把占空间大的数据 类型转换成较小的(损失一定精度,换来性能) 。 • 因此如果你的程序不需要那么高精度,可以考虑 用小点的数据类型。 8 个 bit 合并进一个 int8_t :每个占据 1/8 字节 • 考虑到我们的 i % 2 只可能是 0 和 10 码力 | 102 页 | 9.50 MB | 1 年前3
MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树0 码力 | 29 页 | 1015.26 KB | 1 年前3
Java 应用与开发 - Java 语言基础与流程控制大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 Java 应用与开发 Java 语言基础与流程控制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 August 28, 2018 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 参考书目 1. 陈国君等编著 Java (3rd) 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 学习目标 ▶ Java 语言基础 1. 数据类型 2. 常量和变量 3. 关键字与标识符 4. 运算符与表达式 5. 从键盘输入数据 ▶ 流程控制 1. 语句和复合语句 2. 分支结构(选择结构) 3. 循环结构 4. 跳转语句 大纲 数据类型 常量和变量 关键字与标识符 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 ���� 数据类型 常量和变量 关键字与标识符 运算符与表达式 从键盘获得输入 语句 分支结构 循环结构 大纲 数据类型 常量和变量 关键字与标识符0 码力 | 37 页 | 685.82 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东. . . . . . . . . . . . . . . . . . . . . . . 10 2.1.1 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.2 数据类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 xxi 表目录 2.1 整型数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 整型数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 语言基础包括:数据类型、常量和变量、关键字与标识符、运算符与表达式、 从键盘输入数据。 2. Java 流程控制包括:语句和复合语句、分支结构(选择结构)、循环结构、跳转 语句。 授课方式 理论课: 多媒体教学、程序演示 实验课: 上机编程 9 2.1. JAVA 语言基础 � 2 � 教学内容 2.1 Java 语言基础 2.1.1 数据类型 Java 数据类型分为两大类:0 码力 | 330 页 | 6.54 MB | 1 年前3
Golang 入门笔记"Runoob") 关键字 关键字或保留字 预定义标识符 Go 语言的空格 1. 变量声明必须用空格隔开。例如: var age int 2. 语句中适当的空格可以提升代码的可读性,容易理解。 数据类型 1. 布尔类型(bool) 基本介绍 1. 布尔类型也叫 bool 类型,bool 类型数据只允许取值 ture 和 flase 2. bool 类型占 1个字节 3. bool 类型适用与逻辑运算,一般用于程序流程控制 无符号整形,用于存放指针 7.基本数据类型的默认值 整型 ==> 0 浮点型 ==> 0 字符串 ==> "" 布尔类型 false 测试案例 8. 基本数据类型的相互转换 介绍:Golang 和 Java/C 不同, Go 在不同类型的变量之间的赋值时需要显式转换,就是说Golang不能自动转换 基本语法 表达式 T(v) 将 v 转换为类型 T T 就是数据类型,比如: int32 被转换的是变量存储的数据(即值),变量本省的数据类型并没有变化 3.在转换中,比如将 int64 转换为 int8, 编译的时候不会报错(需要考虑数据范围), 只是转换的结果是按照溢出处理,和我们希望的结果不一样。 测试案例 9. 基本数据类型和 string 的转换 介绍:开发过程中,我们经常需要将基本数据类型转换为 string , 或者讲 string 转换为基本数据类型 基本语法 1. fmt0 码力 | 2 页 | 511.29 KB | 1 年前3
统一建模语言 UML 参考手册 - 基本概念包括抽象层次的转移 模板参数的绑定 许可的授予和元素对其它元素的使用 其它关系包括用例和流的合并 静态视图显示为类图 静态视图可以用于产生大多数程序中的数据结构声明 ��� 类图中 有许多种元素 如接口 数据类型 用例和信号 它们合在一起被称为分类 它们的举止 如同具有某种限制的类 � 动态行为 动态行为 动态行为 动态行为 有两种方式来建模行为 一种是通过与外界交互的对象的生命史 另一种是使 用一系列对象的通信模式 交互的事物 不可能在阐明交互的事物之前 描述事物如何的交互 静态视图是其它视 图构建的基础 � 静态视图中的关键元素是分类和它们之间的关系 分类是描述事物的模型元素 有许多 种分类 包括类 接口和数据类型 行为性的事物由其它分类来细化 包括用例和信号 另一些分类 如子系统 构件和结点则体现了实现方面的内容 � 为了便于理解和重用性 大型模型必须划分成较小的单元 包是控制和管理模型内容通 用的组织单元 对象是具有可调用的良好定义行为的可标识的一个状态 � 分类之间的关系是关联 概括 以及各种依赖 包括实现和使用 � 分类 分类 分类 分类� 分类是模型中的离散概念 它具有标识 状态 行为和关系 分类的种类包括类 接口 和数据类型 其它类型为行为概念 环境事物或实现结构的具体化 这些分类包括用例 活动者 构件 结点和子系统 表 ��� 列举了各种分类和它们的功能 元模型术语分类包 括了所有的概念 但正如类是我们最熟悉的概念一样0 码力 | 123 页 | 2.61 MB | 1 年前3
Python3 基础教程 - 廖雪峰............................................................................................ 32 数据类型和变量 .............................................................................................. Tab 和空格。 数据类型和变量 数据类型 Python3 基础教程【完整版】 http://www.yeayee.com/ 34/531 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当 然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处 理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需 要定义不同的数据类型。在 Python 中,能够直接处理的数据类型有以 中,能够直接处理的数据类型有以 下几种: 整数 Python 可以处理任意大小的整数,当然包括负整数,在程序中的表示方 法和数学上的写法一模一样,例如:1,100,-8080,0,等等。 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便, 十六进制用 0x 前缀和 0-9,a-f 表示,例如:0xff00,0xa5b4c3d2,等等。 浮点数 浮点数也就是小数0 码力 | 531 页 | 5.15 MB | 1 年前3
Object Pascal 参考手册(Ver 0.1) Overview - 1 - Overview(概述) Using object pascal(使用 object pascal) Object Pascal 是一种高级编译语言,具有强类型(对数据类型的检查非常严格)特性,支持结构化 和面向对象编程。它的优点包括代码的易读性、快速编译,以及支持多个单元文件从而实现模块化编程。 Object Pascal 具有一些特性以支持 Borland 组件框架和 7*10^-2,12.25e+6 和 12.25e6 都表示 12.25*10^6。 $前缀表示一个 16 进制数字,比如$8F。没有“-”号运算符的数字被认为是正数。在赋值时,若它 的值在接收者的数据类型范围之外,将产生一个错误,除非它是整数类型(32 位整数),此时将引发一 个警告,并且,values exceeding the positive range for Integer are taken numbers in a manner consistent with 2's complement integer representation. 关于实数和整数类型的更多信息,请参考数据类型、变量和常量。关于数字常量的数据类型,请参 考真常量。 Labels(标签) 标签是一个不超过 4 位的阿拉伯数字序列,也就是从 0 到 9999,打头的 0 没有意义。标志符也可行 使标签的功能。 Syntactic0 码力 | 168 页 | 868.25 KB | 1 年前3
MoonBit月兔编程语言 现代编程思想 第四课 多元组, 结构体,枚举类型 现代编程思想 多元组,结构体与枚举类型 Hongbo Zhang 1 基础数据类型:多元组与结构体 2 回顾:多元组 多元组:固定⻓度的不同类型数据的集合 定义: (<表达式>, <表达式>, ...) 类型: (<表达式类型>, <表达式类型>, ...) 例如: 身份信息: ("Bob", 2023, 10, 24): (String, Int, Int, Int) 成员访问: } 此时枚举类型对应可区分的并集,⼜称和类型 21 代数数据类型 22 代数数据类型 我们将多元组、结构体、枚举类型等称为代数数据类型,它们具有代数结构 类型相等:同构 类型相乘:积类型 类型相加:和类型 加法的单位元: enum Nothing {} 乘法的单位元: (): Unit 23 代数数据类型 对于任意类型 T , (T, Unit) 与 T 同构 1. { CaseT(t) } 24 代数数据类型 enum Coins { Head; Tail } enum DaysOfWeek { Monday; Tuesday; ...; } List 的定义(以 List[Int] 为例): 25 总结 本章节介绍了⽉兔中的诸多⾃定义数据类型,包括 多元组 结构体 枚举类型 并介绍了代数数据类型的概念 推荐阅读 Category Theory0 码力 | 26 页 | 435.86 KB | 1 年前3
Java 应用与开发 - Java 数组和字符串一维数组 二维数组 字符串 接下来… 数组的概念 一维数组 二维数组 字符串 大纲 数组的概念 一维数组 二维数组 字符串 数组的基本概念 数组是相同数据类型的元素按一定顺序排列的集合。Java 中, 数组元素既可以为基本数据类型,也可以为对象。 O Java 的内存分配(基础) 栈内存 存放定义的基本类型的变量和对象的引用变量,超 出作用域将自动释放。 堆内存 存放由 new 运算符创建的对象和数组,由 运算符创建的对象和数组,由 Java 虚 拟机的自动垃圾回收器来管理。 大纲 数组的概念 一维数组 二维数组 字符串 数组的主要特点 ▶ 数组是相同数据类型的元素的集合; ▶ 数组中的各元素有先后顺序,它们在内存中按照这个先后顺 序连续存放; ▶ 数组的元素用整个数组的名字和它自己在数组中的顺序位置 来表示。 例如,a[0] 表示名字为 a 的数组中的第一个元素,a[1] 表示数组 a 的第二个元素,依次类推。 0,实数为 0.0,布尔型为 false,引用型为 null。 大纲 数组的概念 一维数组 二维数组 字符串 一维数组 O 一维数组的初始化 若在声明数组时进行赋值即初始化称为静态内存分配。 数据类型 [] 数组名 = 初值 0,初值 1,…,初值 n; CODE ± 一维数组静态初始化 1 int[] a = {1,2,3,4,5}; 注意 在 Java 程序中声明数组时,无论用何种方式定义数组,都不能0 码力 | 33 页 | 620.46 KB | 1 年前3
共 180 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18













