很多时候,我们会习惯的把一大串的操作直接丢给CPU去执行,虽然CPU执行的速度的确很快,但是也不是这么浪费性能的。有很多代码可以优化的,程序员可以优化一下在让CPu执行,这样效率会快很多。
下面我举一个简单的例子,这个例子是来自http://ninglingtao85218.blog.163.com/blog/static/17530692200782731514827/ 这个博客,感谢这位博主的分享。
题目是:写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
没经过优化的代码:
//没有优化过的代码
public static long method1(long n) {
long temp = 0;
int i = 1, flag = 1;
if (n <= 0) {
System.out.println("error: n must > 0");
return temp;
}
for (i = 1; i <= n; i++)
{
temp = temp + flag * i;
flag = (-1) * flag;
}
return temp;
}
数字很大的时候。
经过优化的代码:
//算法优化。CPU执行速度虽然快,但是也不是让程序员什么都不想的就让它执行
public static long method2(long n){
if (n <= 0) {
System.out.println("error: n must > 0");
return 0;
}
if (0 == n % 2)
return (n / 2) * (-1);
else
return (n / 2) * (-1) + n;
}
---------------------------------------------------------------------
如果这个问题在数值很大的情况下,效率差别就会很大。 第一个算法,在很大的数下面,效率太低。明显超过了正常人的等待时间。
而且优化的算法也不是很难,我们初高中做的数学题还有比这个简单的吗??
难怪一个优秀的程序员,要有优秀的数学基础。