算法
浪里狼
这个作者很懒,什么都没留下…
展开
-
重新结合
重新结合:编程时,重新设置运算的结合顺序,会带来性能的提升。因为结合顺序的不同,对应的操作顺序也会不同。例如:a = a*b[i]*b[i + 1],操作流程如图:a = a*(b[i]*b[i + 1]),操作流程图如下:实例代码:long long getSystemTime() { struct timeb t; f原创 2015-07-29 14:37:02 · 460 阅读 · 0 评论 -
代码的局部性
现代操作系统中,基本上都带有设计的高速缓存,高速缓存比读写磁盘和主存快的多,在高速缓存中操作数据性能相对于磁盘和主存快很多。系统会把程序最近用到的数据存储在高速缓存中以便程序下一次使用时直接从高速缓存中读取,这就是代码的时间局部性。系统也会把最近用到的数据的临近地址存储在高速缓存中以便下一次使用,这是空间局部性。int main(){ int b_data,原创 2015-08-12 13:55:15 · 1451 阅读 · 0 评论 -
循环展开
循环展开:减少循环次数来提高程序性能。如果展开次数太多,反而会造成性能急剧下降。因为展开次数太多,那么运算过程中中间变量会很多,而计算机的寄存器个数是固定的,当变量个数超了寄存器,那么变量只能存到栈中从而导致性能下降实例代码如下long long getSystemTime() { struct timeb t; ftime(&t);原创 2015-07-29 14:26:10 · 3487 阅读 · 0 评论 -
条件传送和条件控制转移
条件控制转移指根据代码的条件结果来选择执行的路径,条件传送指先把结果执行,在根据条件结果选择结果值在相同的情况下,条件传送性能比条件控制转移高原创 2015-08-13 08:53:47 · 2535 阅读 · 0 评论 -
并行性
并行性:cpu处理指令是并行的,前一条指令处理时,紧接着前一条的指令也会开始处理,如果后一条指令和前一条指令无关,那么程序性能会得到提升,我们常常会把一个操作分解成几条指令并行来提升性能。实例代码:long long getSystemTime() { struct timeb t; ftime(&t); return 1000原创 2015-07-29 14:28:49 · 568 阅读 · 0 评论