尽可能的优化代码性能
来源:互联网 发布:网络推广策划书范文 编辑:程序博客网 时间:2024/04/30 23:38
尽可能的优化代码性能
如下代码成为了系统的瓶颈,请尽可能的优化;
要求找到优化的点和优化方案,分析说明原因。
代码如下:
#define M 10000
#define N 10000
#define L 3
int arr[L][M][N];
int xxx[M * N];
int main()
{
// init arr and xxxfirst, omit
// start
for (int r=0;r<10000; ++r)
{
f(arr);
}
return 0;
}
void f( intarr[L][M][N] )
{
int k = 0;
for ( int m=0;m<M; m++ )
{
for( int n=0; n<N; n++ )
{
for ( int l=0; l<L; l++)
{
int ss = arr[l][m][0] + 1111;
int tmp = sss + power( log(arr[l][m][n] ), 3 );
arr[l][m][n] = a[l][m][n] + tmp;
xxx[k] += arr[l][m][n];
}
k = k + 1;
}
}
}
修改点:
1. power函数,可以直接写成a*a*a,这个优化效果与机器型号有关
2. 改变数据结构,arr[L][M][N]修改成arr[M][N][L],修改后的好处:
a) 内层循环的一些共有计算可以提前
b) 内层数据访问被连续存储,cache命中率极度提升(最重要也是最根本的优化点)
3. 改变循环方式,for l, for m, for n;配合2,修改循环方式后,可以对l循环进行循环展开,减少分支预测失败
4. ….
- 尽可能的优化代码性能
- 前端性能优化:尽可能使用CSS动画
- 如何优化VBA代码并使程序尽可能快的运行
- 如何优化VBA代码并使程序尽可能快的运行
- android的代码性能优化
- 常见的代码性能优化
- 【性能优化】代码优化---TraceView的使用
- 约瑟夫环问题及其尽可能的优化
- ASP.NET中常用的26个优化性能方法---使请求管线内的所有模块尽可能高效
- 尽可能消灭你代码里的else
- 代码优化:性能优化不是丑陋代码的遮羞布!
- Java代码优化--尽可能地使用stack(栈)变量(方法内部的局部变量)
- Java代码优化--尽可能地使用stack(栈)变量(方法内部的局部变量)
- Java代码优化--尽可能地使用stack(栈)变量(方法内部的局部变量)
- Java代码优化--尽可能地使用stack(栈)变量(方法内部的局部变量)
- (代码级)Java性能的优化
- (代码级)Java性能的优化
- 代码级的性能优化(一)
- 如何避免同一头文件的多次include
- c++中虚函数的实现机制?
- 对一个包含虚函数成员的对象bzero()会有什么问题?
- 在函数体内声明[1] char *str=”abc”;和[2] char str[]={‘a’,’b’,’c’}有什么区别
- C++中模板的编译过程
- 尽可能的优化代码性能
- 结构体大小判断
- 字节对齐
- strcpy,memcpy,sprintf的区别及前两个函数的实现
- std::vector实现原理及特定场景下的改进
- 高字节低字节问题
- 请实现两棵树是否相等的比较,相等返回0,否则返回其他值,并说明算法复杂度。
- 用位运算判定给定的整数是不是2的整数次幂
- 用位运算求给定整数的二进制表示中1的个数