<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學(xué)習(xí)和生活

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

    有時(shí)在項(xiàng)目開(kāi)發(fā)過(guò)程中,對(duì)數(shù)值的精度要求較高時(shí)可能就會(huì)用到j(luò)ava.math.BigDecimal,使用時(shí)發(fā)現(xiàn)有些用法效率較低。
    1:初始化一個(gè)java.math.BigDecimal時(shí)盡量用java.math.BigDecimal.valueOf(0)來(lái)替代new java.math.BigDecimal().
    2:比較兩個(gè)java.math.BigDecimal對(duì)象時(shí),最好用equals(),而不要進(jìn)行數(shù)值轉(zhuǎn)換,如:doubleValue等,測(cè)試發(fā)現(xiàn)凡涉及到類(lèi)型轉(zhuǎn)換,性能都要受到較大影響。
    下面是自己寫(xiě)的一段測(cè)試代碼:
    import java.math.BigDecimal;

    public class TestClass {
    ? public TestClass() {
    ? }
    ? public static void main(String[] args){
    ??? StringBuffer test = new StringBuffer();
    ??? BigDecimal tempBig = null;
    ??? long time1 = System.currentTimeMillis();
    ??? for(int i=0;i<200000;i++){
    ????? tempBig = new BigDecimal(0);
    ????? tempBig = null;
    ??? }
    ??? long time2 = System.currentTimeMillis();
    ??? System.out.println("===="+(time2-time1)+"=======");
    ??? System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");
    ??? long time3 = System.currentTimeMillis();
    ??? for(int i=0;i<200000;i++){
    ????? tempBig = BigDecimal.valueOf(0);
    ????? tempBig = null;
    ??? }
    ??? long time4 = System.currentTimeMillis();
    ??? System.out.println("===="+(time4-time3)+"=======");
    ??? System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");
    ??? tempBig = BigDecimal.valueOf(0);
    ??? BigDecimal ddd = new BigDecimal(1);
    ??? long time5 = System.currentTimeMillis();
    ??? for(int i=0;i<200000;i++){
    ????? if(tempBig.equals(ddd)){
    ????? }
    ??? }
    ??? long time6 = System.currentTimeMillis();
    ??? System.out.println("===="+(time6-time5)+"=======");
    ??? System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");
    ??? long time7 = System.currentTimeMillis();
    ??? for(int i=0;i<200000;i++){
    ????? if(tempBig.doubleValue()==0){
    ????? }
    ??? }
    ??? long time8 = System.currentTimeMillis();
    ??? System.out.println("===="+(time8-time7)+"=======");
    ??? System.out.println("====@@@@@@@@@@@@@@@@@@@@@=======");
    ? }
    }

    posted on 2006-09-25 14:11 TrampEagle 閱讀(5820) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): 學(xué)習(xí)體會(huì)

    Feedback

    # re: 使用BigDecimal時(shí)提高系統(tǒng)性能的一些優(yōu)化 2006-10-21 21:39 wmuu
    BigDeciaml.ZREO
    equals()實(shí)際上不好用應(yīng)該多個(gè)精度的參數(shù).
    原來(lái)認(rèn)為bigDeciaml的實(shí)現(xiàn)會(huì)有些像bcd1248碼,結(jié)果不是.說(shuō)是BigDecimal,結(jié)果確不是準(zhǔn)確的Decimal還是近似的  回復(fù)  更多評(píng)論
      

    # re: 使用BigDecimal時(shí)提高系統(tǒng)性能的一些優(yōu)化 2006-10-21 22:15 wmuu
    有看了一下發(fā)現(xiàn)說(shuō)錯(cuò)了,bigDecimal準(zhǔn)確的十進(jìn)制
    是以前new decimal的時(shí)候用了double  回復(fù)  更多評(píng)論
      

    # re: 使用BigDecimal時(shí)提高系統(tǒng)性能的一些優(yōu)化 2006-12-20 20:58 hhq
    ====使用new 初始化 2000000 次===
    ====90=======
    =============================
    ====使用valueOf 初始化2000000 次===
    ====40=======
    =====================
    ====使用equals 判斷2000000 次===
    ====50=======
    ===============================
    ====使用doubleValue 判斷2000000 次===
    ====50=======
    ===============================


    IBM T41上的表現(xiàn),差異非常有限,沒(méi)有什么意思  回復(fù)  更多評(píng)論
      

    # re: 使用BigDecimal時(shí)提高系統(tǒng)性能的一些優(yōu)化 2007-11-23 16:25 5
    我仔使用的時(shí)候
    用如下代碼
    BigDecimal a=BigDecimal.valueOf(8.209);
    BigDecimal c=BigDecimal.valueOf(9.40).multiply(a);
    double d=c.doubleValue();

    在不同的機(jī)子上得到不同的精度值 77.1646 和77.16460000000001
    不知道是咋回事 代碼一摸一樣  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 毛片免费在线观看| 性盈盈影院免费视频观看在线一区| 亚洲精品高清国产一线久久| 十八禁视频在线观看免费无码无遮挡骂过 | 成人a毛片免费视频观看| 国产l精品国产亚洲区在线观看| 2020久久精品国产免费| 国产成人亚洲午夜电影| 亚洲国产成人久久综合碰碰动漫3d | rh男男车车的车车免费网站| 91精品国产亚洲爽啪在线影院| 青青草国产免费久久久91| 在线观看免费视频网站色| 亚洲国产美女视频| 亚洲一区精品伊人久久伊人| 人成午夜免费视频在线观看| 四虎影视久久久免费| 亚洲在成人网在线看| 中文字幕精品亚洲无线码一区应用| 国产在线观看免费观看不卡| 久久精品成人免费国产片小草| 亚洲影视自拍揄拍愉拍| 亚洲一区无码中文字幕| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 日韩亚洲翔田千里在线| 亚洲人成网站在线播放影院在线 | a级毛片毛片免费观看永久| 亚洲ts人妖网站| 亚洲日韩一页精品发布| 国产成人在线观看免费网站 | 免费国产成人高清视频网站| 2015日韩永久免费视频播放| 狼人大香伊蕉国产WWW亚洲| 亚洲视频免费在线看| 亚洲精品乱码久久久久久按摩| 免费观看a级毛片| 国产精品免费网站| 成全高清在线观看免费| 成人国产网站v片免费观看| 亚洲男人的天堂网站| 亚洲H在线播放在线观看H|