java 使用簡(jiǎn)單的demo實(shí)例告訴你優(yōu)化算法的強(qiáng)大
更新時(shí)間:2013年05月02日 15:50:53 作者:
本篇文章介紹了,在java中使用簡(jiǎn)單的demo實(shí)例告訴你優(yōu)化算法的強(qiáng)大。需要的朋友參考下
這里的demo是一個(gè)累加算法,如1,2,3,4.....n
即:sum = 1+2+3+4......+n;
我們可以這樣做:
復(fù)制代碼 代碼如下:
/**
* 循環(huán)實(shí)現(xiàn)累加方法
* @param value
* @return
*/
private static long cycle(long value) {
long sum = 0;
for (long i = 1,v = value; i <= v; i++) {
sum += i;
}
return sum;
}
另一種方法(高斯方法):
復(fù)制代碼 代碼如下:
/**
* 高斯方法:<code>(n+1)*n/2</code><br>
* you can read more from <a >Here</a>
* @param value
* @return
*/
private static long gaosi(long value) {
long sum = 0;
sum = (value + 1) * value / 2;
return sum;
}
我們可以寫(xiě)一個(gè)demo來(lái)測(cè)試他們的差別:
復(fù)制代碼 代碼如下:
/**
*
*/
package com.b510.arithmetic;
/**
* 累加算法實(shí)現(xiàn)<br>
*
* @date 2013-4-16
* @author hongten
*
*/
public class AddArithmetic {
/**
* 循環(huán)實(shí)現(xiàn)累加方法
* @param value
* @return
*/
private static long cycle(long value) {
long sum = 0;
for (long i = 1,v = value; i <= v; i++) {
sum += i;
}
return sum;
}
/**
* 高斯方法:<code>(n+1)*n/2</code><br>
* you can read more from <a >Here</a>
* @param value
* @return
*/
private static long gaosi(long value) {
long sum = 0;
sum = (value + 1) * value / 2;
return sum;
}
public static void main(String[] args) {
//清理一下內(nèi)存,但不一定會(huì)執(zhí)行
System.gc();
// you should change value,then get the different results
long value = 10000000;
long sum = 0;
long start = System.currentTimeMillis();
sum = cycle(value);
long end = System.currentTimeMillis();
System.out.println("使用循環(huán)累加方法從[1]累加到["+value+"]用時(shí) : ["+(end - start) + "]ms,結(jié)果:"+ sum);
//清理一下內(nèi)存,但不一定會(huì)執(zhí)行
System.gc();
start = System.currentTimeMillis();
sum = gaosi(value);
end = System.currentTimeMillis();
System.out.println("使用高斯方法從[1]累加到["+value+"]用時(shí) : ["+(end - start) + "]ms,結(jié)果:"+ sum);
}
}
你可以改變main方法中的value的值,來(lái)測(cè)試他們所消耗的系統(tǒng)時(shí)間....
當(dāng)然不同配置的機(jī)器運(yùn)行結(jié)果是不一樣的...
我機(jī)器運(yùn)行情況:
復(fù)制代碼 代碼如下:
使用循環(huán)累加方法從[1]累加到[10000000]用時(shí) : [24]ms,結(jié)果:50000005000000
使用高斯方法從[1]累加到[10000000]用時(shí) : [0]ms,結(jié)果:50000005000000
您可能感興趣的文章:
相關(guān)文章
JAVA中五個(gè)重定向的方式盤(pán)點(diǎn)
頁(yè)面重定向即頁(yè)面從當(dāng)前請(qǐng)求的頁(yè)面,有條件或者定時(shí)跳轉(zhuǎn)到其他頁(yè)面,下面這篇文章主要給大家介紹了關(guān)于JAVA中五個(gè)重定向的方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12java工具類(lèi)StringUtils使用實(shí)例詳解
這篇文章主要為大家介紹了java工具類(lèi)StringUtils使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05java生成圖片驗(yàn)證碼返回base64圖片信息方式
這篇文章主要介紹了java生成圖片驗(yàn)證碼返回base64圖片信息方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Springboot中使用Redisson+AOP+自定義注解實(shí)現(xiàn)訪(fǎng)問(wèn)限流與黑名單攔截
本文主要介紹了Springboot中使用Redisson+AOP+自定義注解實(shí)現(xiàn)訪(fǎng)問(wèn)限流與黑名單攔截,包含針對(duì)用戶(hù)IP限流,整個(gè)接口的訪(fǎng)問(wèn)限流,以及對(duì)某個(gè)參數(shù)字段的限流,并且支持請(qǐng)求限流后處理回調(diào),感興趣的可以了解一下2024-02-02