当前开发人员在进行编码的时候,可能很少关注纯粹代码级别的优化了。关于优化,或许很多人会说不要过早地进行优化。从某种程度上来说,笔者也认同这个观点。但是当明确了优化对象的时候,我们都有哪些办法呢?以下是几个代码优化的简单例子。
1 Sample 1
public class LoopPerf {
public static double add1(double array[]) {
double sum = 0;
final int length = array.length;
for(int i = 0; i < length; i++) {
sum += array[i];
}
return sum;
}
public static double add2(double array[]) {
double sum = 0;
final int length = array.length;
for(int i = 0; i < length; i+=2) {
sum += array[i];
sum += array[i + 1];
}
return sum;
}
public static double add3(double array[]) {
double sum1 = 0;
double sum2 = 0;
final int length = array.length;
for(int i = 0; i < length; i+=2) {
sum1 += array[i];
sum2 += array[i + 1];
}
return sum1 + sum2;
}
}
以上示例代码中,add1,add2,add3的每次调整,由于更有效地利用了现代CPU的指令流水,差不多能带来10%左右的性能提升。
2 Sample 2
public class LoofPerf2 {
public static void mul1(int n, int x[][], int y[][], int z[][]) {
for(int k = 0; k < n; k++) {
for(int j = 0; j < n; j++) {
final int r = y[k][j];
for(int i = 0; i < n; i++) {
z[i][j] += x[i][k] * r;
}
}
}
}
public static void mul2(int n, int x[][], int y[][], int z[][]) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
int sum = 0;
for(int k = 0; k < n; k++) {
sum += x[i][k] * y[k][j];
}
z[i][j] = sum;
}
}
}
public static void mul3(int n, int x[][], int y[][], int z[][]) {
for(int k = 0; k < n; k++) {
for(int i = 0; i < n; i++) {
final int r = x[i][k];
for(int j = 0; j < n; j++) {
z[i][j] += r * y[k][j];
}
}
}
}
}
以上示例代码中,当数据的维度比较大时(例如500),mul1,mul2,mul3的每次调整,由于更有效地利用了CPU的L1缓存, 差不多能带来10%以上的性能提升。
分享到:
相关推荐
Lab 4: Code Optimization
代码优化:有效使用内存 Code Optimization: Effective Memory Usage pdf 英文版 清晰,该书中文版翻译质量很差,建议直接读英文版
CMU大学的CSAPP中实验Code Optimization 的解答,只上传了有用的kernel.c
C的编程优化 Code Optimization, 简单的ppt
C++ Code Optimization
Code.Optimization.Effective.Memory.Usage
MATLAB/FORTRAN software for Iterative Methods for Optimization by C. T. Kelley
This book is a summary of more than a decade of research in the area of backend optimization. It contains the latest fundamental research results in this field. While existing books are often more ...
12 commandments for code optimization
VB programming examples of the application code optimization
People often write less readable code because they think it will produce faster code. Unfortunately, in most cases, the code will not be faster.
simp3D论文An efficient 3D topology optimization code written inMatlab+ 程序+STL文件生成MATLAB程序
MPPT code for particle swarm optimization
code_size_optimization 代码密度优化方法,通过实例C来说明
topology optimization matlab code
代码优化教程这是一组教程代码,我用来教授代码优化技术和工具。 示例:几个标准示例。 mkl-lab:有关如何使用mkl的示例。 nbody:n-body模拟,从基本版本开始,直到openmp + vectorized。 vtune-lab:用于VTune应用...