MIT6.172 Bentley Rules for Optimizing Work笔记

软件优化工作有许多基础方法,这里介绍了4大块共22个小方法。

一、Data structures

1. packing and encoding

packing:在一个machine word(字节\dw)中存储多于一个的数据
encoding:用更少的字节存储相同的数据
例:int型的 1912 比字符串型的 1912 占据空间小、

2. augmentation

在数据结构里加一些信息让基础动作更简便
例:在一个链表后append另一个链表,存储一个指向尾结点的指针,让append更快。

3.precomputation

对一些要用到的数据进行预计算,类似于动态规划
例:事先计算杨辉三角,以计算二项式系数

4. caching

前面的计算结果不删掉,一遍后续的计算能用,有点类似简陋版的动态规划。

5.sparsity

将结构化的数据紧凑化。改变数据结构,避免存储与计算 0。
例:稀疏矩阵的存储:用一个二维数列存储每个元素的值与在列的位置,用一个一维数组存储每行的数量(存储起始位置,存储指针)。
例:将图简化。

二、Logic

1. constant folding and propagation

将所有的常数计算都放到编译阶段

2.common-subexpression elimination

变量计算可以简化,目的,更少的基本计算语句执行
例 a=b+c d=c+e f=a-d 变为 a=b+c d=c+e f=b-e

3.algebraic identities

同相同效果的但是计算量更小的运算符符号替代。
例:比较sqrt(a)<b ==== a<b^2,开根号的消耗比平方大

4.short-circuiting

达到条件时提早停止循环,例如冒泡排序中设置停止条件

5.ording tests

条件判断语句中,可能有多个分支,越常见的分支放到最前面(有点类似哈夫曼树)

6.creating a fast path

创建提早成功、退出条件,这些退出条件的计算比较简单

7.combining tests

深度大于1的条件判断树,将其combine成深度为1的条件判断树,用switch等

三、loops

1.hoisting

loop-invariant code motion
将循环中常见计算等每次相同的计算外提

2.sentinels

哨兵,如循环中的flag,作退出条件

3. loop unrolling

循环展开
例:一个循环,12 * 1一个语句 改成 4 * 3个语句
优点:循环中更少的跳转指针的数量,可以获得更多的编译优化

4.loop fusion

如果可以,将两个循环合并到一个循环中

5.eliminationg wasted iterations

规定合理的循环边界
例:

flag = 30;
for(int i=0;i<flag;i++){
	if(i<20)
	 do something
}

把n改为20

四、functions

1.inlining

使用内联函数,让运行速度赶上宏指令

2. tail-recursion elimination

尾递归优化,原理是编译器会把尾递归变成一个循环,防止爆栈

https://zhuanlan.zhihu.com/p/36587160

3.coarsening recursion

在某些时段用更有效率的代码代替原有函数
例:归并函数 优化成 归并插入函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Bentley MicroStation V8i (SelectSeries 4) 08.11.09.833是一款功能强大的CAD软件,主要用于工程设计和建筑设计方面,支持2D和3D建模、渲染和动画等多种功能。其具有自动化工具、可自定义的界面、强大的图形编辑和处理能力、多种文件格式的支持等特点,可以帮助用户在设计过程中提高效率和准确性。此软件灵活便捷,使用范围广泛,不仅适用于建筑、土木工程、交通运输、水利工程等行业,还可以用于电力、制造业等其他领域。Bentley MicroStation V8i (SelectSeries 4) 08.11.09.833拥有丰富的功能模块,例如MicroStation Descartes可以支持地理空间和影像处理,而MicroStation PowerDraft可以用于绘图和草图设计等。这款软件还可以集成其他Bentley产品,如InRoads、GEOPAK、MX等,以扩展其功能和灵活性。总的来说,Bentley MicroStation V8i (SelectSeries 4) 08.11.09.833是一款功能强大且灵活多样的CAD软件,能够帮助用户快速高效地完成设计任务,是各行业专业人士不可或缺的工具之一。 ### 回答2: Bentley MicroStation V8i (SELECTseries 4) 08.11.09.833是一款用于CAD和GIS设计的软件。该软件具有强大的三维建模和2D绘图工具,可以用于建筑、土木工程、机械工程、电气工程等领域的设计和制图。它的设计界面简单易用,功能强大,可以轻松创建复杂的设计模型和项目。除此之外,该软件还支持多种文件格式的导入和导出,可以方便地与其他CAD软件进行兼容。此外,该软件还拥有灵活的协作工具和强大的云端支持,可方便团队合作。总体来说,Bentley MicroStation V8i (SELECTseries 4) 08.11.09.833是一款优秀的CAD和GIS设计软件,对于需要进行复杂项目设计和制图的专业人士来说,是非常有价值的工具。 ### 回答3: Bentley MicroStation V8i (SELECTseries 4) 08.11.09.833是Bentley公司推出的一个建筑设计软件,可以用于建筑、土木工程和电气设计等领域。这个软件在功能方面非常强大,可以进行3D建模、制图和渲染等操作,并且还支持多种文件格式的导入和导出。 在使用过程中,该软件提供了丰富的工具和功能,可以帮助用户高效地完成各种任务。其中包括高级的CAD绘图和编辑功能、多样化的标注和尺寸控制、灵活的图层管理和复杂线型设置等。 除此之外,该软件还具有强大的工作流程管理功能,可以帮助用户更好地协作和组织项目。例如,它提供了定制化的自动化工具,可以快速生成标准的设计图件,并支持多用户同时协作同一项目。 总之,Bentley MicroStation V8i (SELECTseries 4) 08.11.09.833是一款功能强大、易于使用的建筑设计软件,为用户提供了综合性的设计解决方案,可以满足各种不同领域的设计需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值