效率测试

写了一段代码,运行之后有疑问:

1.为什么测试5中,12.5和12运行效率相差那么大

2.提取方法后,效率为什么会低

3.调用提取的方法,测试5中浮点型得出的结论又不见了?

public class demo {

public static void main(String[] args) throws Exception {

//规律探测

test();

//浮点型参数测试

long l =0;

long time2 = System.currentTimeMillis();

//for(int i=1;i<500000;i++){

l += myAlj(1, 12.5, 200);

//}

System.out.println(l);

System.out.println(System.currentTimeMillis()-time2);

System.out.println("浮点-------------------------------------------");//循环写入方法:138,不写入:149ms

//整数方法测试

long time = System.currentTimeMillis();

long l2 =0;

//for(int i=1;i<500000;i++){

l2 += myAlj(1, 25, 200);

//}

System.out.println(l2);

System.out.println(System.currentTimeMillis()-time);//循环写入方法:278,不写入:298

System.out.println("整数-------------------------------------------");

}

private static void test() {

//-----------------------------测试一--------------------------------

long begin1=System.currentTimeMillis();

long j=0;

for(int i=1;i<500000;i++){

for(int i1=1;i1<=200;i1++){

j+=i1;

}

}

System.out.println(j);

System.out.println("测试一:"+(System.currentTimeMillis()-begin1));

System.out.println("-------------------------------------------");

//------------------------------测试二----------------------------------

long j1=0;

long begin2=System.currentTimeMillis();

for(int i=1;i<500000;i++){

for(int i1=1;i1<=100;i1++){

j1+=1*1+100*2*1;

}

}

System.out.println(j1);

System.out.println("测试二:"+(System.currentTimeMillis()-begin2));

System.out.println("-------------------------------------------");

//------------------------------测试三----------------------------------

long begin3=System.currentTimeMillis();

long j2=0;

for(int i=1;i<500000;i++){

for(int i1=1;i1<=50;i1++){

j2+=1*2+50*4*2;

}

}

System.out.println(j2);

System.out.println("测试三:"+(System.currentTimeMillis()-begin3));

System.out.println("-------------------------------------------");

// //------------------------------测试四---------------------------------

long begin4=System.currentTimeMillis();

long j3=0;

for(int i=1;i<500000;i++){

for(int i1=1;i1<=25;i1++){

j3+=4+25*8*4;//2,8,32  4,4

}

}

System.out.println(j3);

System.out.println("测试四:"+(System.currentTimeMillis()-begin4));

System.out.println("-------------------------------------------");

// //------------------------------测试五----------------------------------

long begin5=System.currentTimeMillis();

long j4=0;

for(int i=1;i<500000;i++){

for(int i1=1;i1<=13;i1++){

if(i1<=12){

//12.5=>12  耗时116ms=>14ms

j4+=8+12.5*16*8;//(1+n*f/n)*f/n/2

}else{

j4+=4+12.5*16*4;

}

}

}

System.out.println(j4);

System.out.println("测试五:"+(System.currentTimeMillis()-begin5));

System.out.println("-------------------------------------------");

}

//------------------------------提取方法-----------------------------------

/**

*

* @param arg1 起始数

* @param d

* @param f 结尾数

* @return

* @throws Exception

*/

public static long myAlj(int arg1,double d,int f) throws Exception{

//浮点数

long a=0;

long sum=0;

int temp2=(int)d+1;

for(int i=1;i<500000;i++){

if(Math.floor(d)!=d){

for(int i1=arg1;i1<=temp2;i1++){

int temp=(int)d;

if(i1<=temp){

//sum+=(arg1+arg2*f/arg2);//(arg1+arg2*f/arg2)*f/arg2/2

//(arg1+f)*f/arg2/2

sum+=(arg1+f)*f/d/2;

//a++;

}else{

sum+=((arg1+f)*f/d/2)*(d-temp);

//a++;

}

}

//return sum;

}else{

//for(int i=1;i

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容