Skip to the content.

Lecture 2 Bentley Rules for Optimizing Work

课程内容

本节课主要介绍了一些常见的优化方法,即“New Bentley Rules”。主要介绍的方法总结如下:

  Data Structure Logic Loops Functions
CPU Augmentation Constant Folding and Propagation Hoisting Inlining
  Precomputation Common-Subexpression Elimination Sentinels Tail-Recursion Elimination
  Compile-Time Initialization Algebraic Identities Loop Unrolling Coarsening Recursion
  Caching Short-Circuiting Loop Fusion  
  Sparsity Ordering Tests Eliminating Wasted Iterations  
    Creating a Fast Path    
    Combining Tests    
Memory Packing and Encoding      
  Sparsity      

1 Data Structures

1.1 Packing & Encoding

1.2 Augmentation

1.3 Precomputation

1.4 Compile-Time Initialization

1.5 Caching

三者比较:

备注:对于Compile-Time Initialization还有更近一步的优化方法,即metaprogramming(programs a program that writes programs)。也就是,用编程的方法生成代码,代码的核心点事需要用到的数据(如:Look-up Table)。

1.6 Sparsity

2 Logic

2.1 Constant Folding and Propagation

2.2 Common-Subexpression Elimination

2.3 Algebraic Identities

2.4 Short-Circuiting

2.5 Ordering Tests

2.6 Creating a Fast Path

三者比较:

备注:对于Ordering Test来讲,&&放在最前面的是容易失败的,||放在最前面的是最容易成功的。由于其短路的性质,核心点事越早结束判断越好,执行计算越少越好。

2.7 Combining Tests

3 Loops

3.1 Hoisting (Loop-Invariant Code Motion)

3.2 Sentinels

3.3 Loop Unrolling

3.4 Loop Fusion (jamming)

3.5 Eliminating Wasted Iterations

4 Functions

4.1 Inlining

4.2 Tail Recursion Elimination

4.3 Coarsening Recursion

三者比较:

TODO

英语学习