标签:code int 跳转 浮点 一起 style 基本类型 局部变量 编译
临时变量的代价。
复制操作与构造析构函数的代价差异。
cache的时间局限性和空间局限性
时间局限性:如果一个存储单元被访问,则可能该单元会很快再次被访问,因为存在循环;
空间局限性:如果一个存储单元被访问,则可能该单元临近的单元也可能很快被访问,因为程序中大部分指令是顺序存储,
数据也一般是集中在一起的。
如果循环体的空间代价大于cache的容量,则不能充分利用cache了,因为cache需要与内存交换代码指令和数据。
无论对于整数还是浮点数,出发都是一个运算速度很慢的指令。以下的一些简单方法可以用来来提高效率:
构造函数与临时变量&赋值的代价差异。
13.
1 c = a+b; 2 d = a+b+e; 3 f = a+b+g;
优化为
1 c = a+b; 2 d = c+e; 3 f = c+g;
利用CPU的流水来做并行计算,比如:
优化前
1 for (int i = 0; i < len; i++) 2 { 3 sum += a[i]; 4 }
优化后:
1 for (int i = 0; i < len; i = i + 4) 2 { 3 sum1 += a[i]; 4 sum2 += a[i + 1]; 5 sum3 += a[i + 2]; 6 sum4 += a[i + 3]; 7 } 8 sum + sum1 + sum2 + sum3 + sum4;
标签:code int 跳转 浮点 一起 style 基本类型 局部变量 编译
原文地址:https://www.cnblogs.com/Yu-900914/p/10048075.html