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

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

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

    posts - 59, comments - 244, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Db4o查詢測試

    Posted on 2010-10-21 00:24 penngo 閱讀(1900) 評論(0)  編輯  收藏 所屬分類: Java
    在使用Db4o時做分頁時,做了個測試。分別對1000條、10000條、100000、300000條數(shù)據(jù)進(jìn)行了插入和NQ、QBE查詢測試。
    public class Test {
        
    final static String DB4OFILENAME = "formula1.db";
         
    public static void main(String[] args) {
             ObjectContainer db
    =Db4oEmbedded.openFile(Db4oEmbedded
                        .newConfiguration(), DB4OFILENAME);
             
    try {
                 storePilots(db);
                 retrieveComplexNQ(db);
             }

             
    catch(Exception e){
                 e.printStackTrace();
             }

             
    finally {
                    db.close();
                }

         }

         
         
    public static void storePilots(ObjectContainer db) {
                 
    long time = System.currentTimeMillis();
                System.out.println(
    "插入100000條數(shù)據(jù)前內(nèi)存:" + Runtime.getRuntime().totalMemory());
                
    for(int i = 0; i < 100000; i++){
                    db.store(
    new Pilot("Michael Schumacher",100));
                }

                System.out.println(
    "插入100000條數(shù)據(jù)后內(nèi)存:" + Runtime.getRuntime().totalMemory() 
                        
    + " 時間" + (System.currentTimeMillis() - time));
            }

         
         
    public static void retrieveComplexNQ(ObjectContainer db) {
             
    long time = System.currentTimeMillis();
            System.out.println(
    "NQ查詢前內(nèi)存:" + Runtime.getRuntime().totalMemory());
            
    ///NQ方式不會把查詢到的數(shù)據(jù)加載到內(nèi)存,分頁的話,可以用這個先查詢出結(jié)果集
            List<Pilot> result=db.query(new Predicate<Pilot>() {
                
    public boolean match(Pilot pilot) {
                    
    return true;
                }

            }
    );
            System.out.println(
    "NQ查詢后內(nèi)存:" + Runtime.getRuntime().totalMemory()
                    
    + " 時間" + (System.currentTimeMillis() - time));
            time 
    = System.currentTimeMillis();
            System.out.println(
    "QBE查詢前內(nèi)存:" + Runtime.getRuntime().totalMemory());
            ObjectSet result1
    =db.queryByExample(Pilot.class);
            System.out.println(
    "QBE查詢后內(nèi)存:" + Runtime.getRuntime().totalMemory()
                   
    + " 時間" + (System.currentTimeMillis() - time));
       }

    }

    public class Pilot {    
        
    private String name;
        
    private int points;  
        
        
    public Pilot(String name,int points) {
            
    this.name=name;
            
    this.points=points;
        }

            
        
    public int getPoints() {
            
    return points;
        }

        
        
    public void addPoints(int points) {
            
    this.points+=points;
        }

        
        
    public String getName() {
            
    return name;
        }

        
        
    public String toString() {
            
    return name+"/"+points;
        }

    }

    //////1000條數(shù)據(jù)的測試結(jié)果
    插入1000條數(shù)據(jù)前內(nèi)存:5177344
    插入1000條數(shù)據(jù)后內(nèi)存:5177344 時間219
    NQ查詢前內(nèi)存:5177344
    NQ查詢后內(nèi)存:5177344 時間546
    QBE查詢前內(nèi)存:5177344
    QBE查詢后內(nèi)存:5177344 時間32

    //////10000條數(shù)據(jù)的測試結(jié)果
    插入10000條數(shù)據(jù)前內(nèi)存:5177344
    插入10000條數(shù)據(jù)后內(nèi)存:5177344 時間625
    NQ查詢前內(nèi)存:5177344
    NQ查詢后內(nèi)存:5177344 時間344
    QBE查詢前內(nèi)存:5177344
    QBE查詢后內(nèi)存:5177344 時間47

    //////100000條數(shù)據(jù)的測試結(jié)果
    插入100000條數(shù)據(jù)前內(nèi)存:5177344
    插入100000條數(shù)據(jù)后內(nèi)存:15978496 時間4743
    NQ查詢前內(nèi)存:15978496
    NQ查詢后內(nèi)存:15978496 時間297
    QBE查詢前內(nèi)存:15978496
    QBE查詢后內(nèi)存:22306816 時間312

    //////300000條數(shù)據(jù)的測試結(jié)果
    插入100000條數(shù)據(jù)前內(nèi)存:5177344
    插入100000條數(shù)據(jù)后內(nèi)存:55123968 時間14040
    NQ查詢前內(nèi)存:55123968
    NQ查詢后內(nèi)存:55123968 時間313
    QBE查詢前內(nèi)存:55123968
    QBE查詢后內(nèi)存:66650112 時間748

    結(jié)論,在數(shù)據(jù)量少時,使用QBE查詢比NQ查詢要快。可以使用NQ查詢做分頁處理,因為NQ并沒有把查詢結(jié)果的所有數(shù)據(jù)加載到內(nèi)存中,查詢前后,內(nèi)存都是沒有變化的。

    主站蜘蛛池模板: 亚洲精品国产suv一区88| 国产在线精品观看免费观看| 国产免费啪嗒啪嗒视频看看 | 国产福利电影一区二区三区,免费久久久久久久精| 国产免费av片在线播放| 在线免费播放一级毛片| 亚洲人成伊人成综合网久久| 亚洲福利精品一区二区三区| 久久国产精品成人片免费| 亚洲AV永久无码精品放毛片| 亚洲成AV人片在线观看无码| 成人免费视频小说| 中文字幕av免费专区| 成人亚洲国产va天堂| 亚洲精品无码久久久久| 在线观看免费为成年视频| 国产免费无码一区二区| 亚洲粉嫩美白在线| 亚洲成在人线av| 国产自产拍精品视频免费看| 久久99热精品免费观看牛牛| 美女视频黄频a免费观看| 亚洲国产日韩在线成人蜜芽 | 久久亚洲2019中文字幕| 黄瓜视频高清在线看免费下载 | 91视频国产免费| 成全视频免费观看在线看| 久久水蜜桃亚洲AV无码精品| 亚洲精品综合久久中文字幕| 久久亚洲av无码精品浪潮| 四虎影视在线永久免费观看| 亚洲精品视频免费在线观看| 中文字幕视频免费在线观看| 国产亚洲精品美女2020久久| 亚洲人成伊人成综合网久久| 无码久久精品国产亚洲Av影片| 国产av无码专区亚洲国产精品| 大陆一级毛片免费视频观看| 我的小后妈韩剧在线看免费高清版| a色毛片免费视频| 国产免费区在线观看十分钟 |