Java语言深入:从算法开始提高效率
前几天看了一个文章,说明了怎样提高程序的效率,我看到的一个观点就是从算法分析开始,对我有比较深的感触,特写下了下面的程序和大家共同进步.
public final class SampleArithmeticAnalyse {
/**
* 私有的构造方法
*/
private SampleArithmeticAnalyse(){
//防止外部建立实例
}
/**
* 计算给定开始和结束以及步长的和。< br>
* < pre>
* 算法:
* 简单的累加
* < /pre>
* @param start 开始
* @param end 结束
* @param step 步长
*/
public static long sumNormal(final long start ,final long end , final long step){
long sum = start ;
long begin = start;
while(begin < end){
begin += step;
sum += begin;
}
return sum;
}
/**
* 计算给定开始和结束以及步长的和。< br>
* < pre>
* 算法:
* 根据 sum =(begin + end)/2 * ((end -begin)/step + 1)推导。
* < /pre>
* @param begin 开始
* @param end 结束
* @param step 步长
*/
public static long sumEspecially(final long begin ,final long end , final long step){
return (begin + end) * (end - begin + step) / (2 * step);
}
}
// 测试代码
package com.free.test;
import com.free.source.SampleArithmeticAnalyse;
import junit.framework.TestCase;
public class TestSampleArithmeticAnalyse extends TestCase {
/*
* Test method for 'com.free.source.SampleArithmeticAnalyse.sumNormal(int, int, int)'
*/
public void testSumNormal() {
long begin = System.currentTimeMillis();
assertEquals(SampleArithmeticAnalyse.sumNormal(1,1000000001,2),250000001000000001l);
long end = System.currentTimeMillis();
System.out.println("SampleArithmeticAnalyse.sumNormal Cost: " + (end - begin)+" Mills!" );
}
/*
* Test method for 'com.free.source.SampleArithmeticAnalyse.sumEspecially(int, int, int)'
*/
public void testSumEspecially() {
long begin = System.currentTimeMillis();
assertEquals(SampleArithmeticAnalyse.sumEspecially(1,1000000001,2),250000001000000001l);
long end = System.currentTimeMillis();
System.out.println("SampleArithmeticAnalyse.sumEspecially Cost: " + (end - begin)+" Mills!" );
}
}
通过上面的测试代码可以很明显的看出效率的提升可以从算法开始。
- 本文关键词:

