熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java程序性能優化-緩存(Cache)(3)

2013-11-23 20:00:31  來源: Java高級技術 

    緩存(Cache)(

  在這個方法攔截器中實現了對緩存的操作它首先查詢系統是否已經計算並緩存了所請求的數字如果沒有則進行計算並將結果保存在緩存中如果有則直接從緩存中取得結果在使用動態代理時可以通過下面的代碼生成動態代理對象包含上述緩存邏輯

  public static HeavyMethodDemo newCacheHeavyMethod(){//生成帶有緩存功能的類

  Enhancer enhancer = new Enhancer()

  enhancersetSuperclass(HeavyMethodDemoclass)

  enhancersetCallback(new CglibHeavyMethodInterceptor())//設置緩存邏輯

  HeavyMethodDemo cglibProxy = (HeavyMethodDemo) enhancercreate()

  return cglibProxy;

  }

  以上代碼首先生成一個HeavyMethodDemo類的子類並使用CglibHeavyMethodInterceptor作為它的方法攔截器最後生成動態類的對象這個對象是HeavyMethodDemo的動態子類的實例

  以下代碼只是簡單地生成了HeavyMethodDemo類下文將對newHeavyMethod()和newCacheHeavyMethod()生成的對象進行簡單的性能測試

  public static HeavyMethodDemo newHeavyMethod(){     //不帶有緩存功能

  return new HeavyMethodDemo()

  }

  一段測試代碼如下它分別使用代理類對象和HeavyMethodDemo對象對一個大整數進行因式分解運算在筆者的計算機上使用動態代理的緩存對象相對耗時ms而HeavyMethodDemo相對耗時ms

  public static void main(String args[]){

  HeavyMethodDemo m=newCacheHeavyMethod()    //使用緩存

  long begin = SystemcurrentTimeMillis()

  for(int i=;i<;i++)                   //使用緩存時只需要計算一次

  mheavyMethod(

  Systemoutprintln(cache method spend:+(SystemcurrentTimeMillis()

  begin))

  m=newHeavyMethod()                         //不使用緩存

  begin = SystemcurrentTimeMillis()

  for(int i=;i<;i++)                   //不使用緩存時每次都要計算

  mheavyMethod(

  Systemoutprintln(no cache method spend:+(SystemcurrentTimeMillis()

  begin))

  }

       返回目錄Java程序性能優化讓你的Java程序更快更穩定

  編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

       JME移動開發實戰教學視頻

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27802.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.