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

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

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

    爪哇一角

    共同探討STRUTS#HIBERNATE#SPRING#EJB等技術(shù)
    posts - 3, comments - 6, trackbacks - 0, articles - 99
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Hibernate性能測(cè)試(load10000條記錄的簡(jiǎn)單測(cè)試 僅供參考)

    性能測(cè)試:
    ?? 對(duì)一個(gè)9036條記錄的表進(jìn)行l(wèi)oad測(cè)試,表字段有8個(gè),有一個(gè)字段是text型,每條記錄的該字段約有1300多字節(jié),其余都是簡(jiǎn)單字段
    ?? 軟硬件:AMD XP1600+, 512M內(nèi)存(測(cè)試時(shí)內(nèi)存有余),winXP SP1, JDK1.4.2_06, Mysql4.1.9,InnoDB,GBK, mm.3.1.6驅(qū)動(dòng), tomcat5.0.28(啟動(dòng)設(shè)置最大內(nèi)存256M,最小內(nèi)存64M),hibernate2.1.8, 打開(kāi)二級(jí)緩存Ehcache(配置二級(jí)緩存最多10000個(gè)對(duì)象)關(guān)閉所有hibernate log信息和sql輸出
    ??
    ?? 方法1:先用 List idList = session.find("select o.id from MyClass o");找出idList然后
    ????????? list.add(session.load(MyClass.class, (Long)idList.get(i)));組成list
    ?? 方法2:直接用hibernate的session.find(from MyClass )得到list
    ?? 方法3:直接用hibernate的session.iterator(from MyClass ),然后list = new ArrayList(9100);? while(iter.hasNext()) { list.add(iter.next()); }構(gòu)造list
    ??
    ?? 每個(gè)方法連續(xù)調(diào)用5次。(第1次調(diào)用是沒(méi)有二級(jí)緩存的結(jié)果,第2次以后是有二次緩存的結(jié)果)
    ??
    ?? 結(jié)果如下:??
    ???????
    ????結(jié)束第1次loadAll1()方法, 用時(shí)15763ms~14762ms
    ????結(jié)束第2次loadAll1()方法, 用時(shí)771ms~580ms
    ????結(jié)束第3次loadAll1()方法, 用時(shí)631ms~611ms
    ????結(jié)束第4次loadAll1()方法, 用時(shí)641ms~591ms
    ????結(jié)束第5次loadAll1()方法, 用時(shí)601ms~551ms
    ??
    ????結(jié)束第1次loadAll2()方法, 用時(shí)2965ms~3025ms
    ????結(jié)束第2次loadAll2()方法, 用時(shí)2854ms~2950ms?
    ????結(jié)束第3次loadAll2()方法, 用時(shí)2613ms~
    ????結(jié)束第4次loadAll2()方法, 用時(shí)2815ms~
    ????結(jié)束第5次loadAll2()方法, 用時(shí)2653ms~
    ????
    ????結(jié)束第1次loadAll3()方法, 用時(shí)16664ms~16514ms
    ????結(jié)束第2次loadAll3()方法, 用時(shí)651ms~661ms
    ????結(jié)束第3次loadAll3()方法, 用時(shí)621ms~591ms
    ????結(jié)束第4次loadAll3()方法, 用時(shí)571ms~571ms
    ????結(jié)束第5次loadAll3()方法, 用時(shí)641ms~631ms ????


    ??
    ?? 分析: 方法1和方法3在訪問(wèn)數(shù)據(jù)庫(kù)的策略是一樣的,所以運(yùn)行時(shí)間基本差不多。(方法3稍慢一點(diǎn)可能是iterator遍歷再組成list用的時(shí)間較多)這兩種方法第一次運(yùn)行都要進(jìn)行9036+1次數(shù)據(jù)庫(kù)訪問(wèn),所以時(shí)間最長(zhǎng)。而第二次以后運(yùn)行只需訪問(wèn)一次數(shù)據(jù)庫(kù),并只取出數(shù)據(jù)的id不取別的字段,因?yàn)榇藭r(shí)所有對(duì)象都已經(jīng)存在二級(jí)緩存中,剩下的是訪問(wèn)二級(jí)緩存組成list,所以速度最快。
    ??
    ????????? 而方法2每次都會(huì)訪問(wèn)數(shù)據(jù)庫(kù)load所有數(shù)據(jù)的所有字段,打開(kāi)cache的log信息,可以看出第2次以后會(huì)通過(guò)二級(jí)緩存得到數(shù)據(jù),但是由于load所有字段占用時(shí)間占了此方法較大比例的開(kāi)銷,所以,即使訪問(wèn)二級(jí)緩存,性能提高也非常微小,每次運(yùn)行的時(shí)間花費(fèi)幾乎一樣。
    ??
    ?????????

    注意事項(xiàng):
    ? (1)不要在機(jī)器運(yùn)行較長(zhǎng)時(shí)間后運(yùn)行tomcat進(jìn)行測(cè)試,特別是機(jī)器啟動(dòng)后頻繁地開(kāi)啟tomcat,java程序,打開(kāi)較大應(yīng)用程序占用很多內(nèi)存的時(shí)候。那時(shí)候測(cè)試結(jié)果一定不準(zhǔn)。比如:我昨天晚上測(cè)試先用方法1的時(shí)間是200S,60S,后運(yùn)行方法2,竟然用了8000S,200S!
    ? (2)設(shè)置log4j的LOG級(jí)別,不要hibernate和sql的信息。時(shí)間會(huì)減少很多。(log4j的配置文件難道有這個(gè)規(guī)矩:一行結(jié)尾不能有空格的說(shuō)???FT!?。。?br />? (3)在tomcat啟動(dòng)時(shí)進(jìn)行測(cè)試,并在測(cè)試方法前調(diào)用一個(gè)會(huì)用到hibernate的方法,讓hibernate初始化先完成
    ?

    主站蜘蛛池模板: 亚洲剧情在线观看| 97免费人妻无码视频| 亚洲AV无码一区二区三区电影| 亚洲熟妇无码另类久久久| 国产青草视频在线观看免费影院| 中文字幕免费视频| 91精品全国免费观看青青| 国产成人精品日本亚洲语音| 亚洲成a人片在线网站| 亚洲精品自产拍在线观看动漫| 中文字幕在亚洲第一在线| 无码欧精品亚洲日韩一区夜夜嗨| 在线观看人成视频免费| 九九精品免费视频| 57pao一国产成永久免费| 精品免费tv久久久久久久| 抽搐一进一出gif免费视频| 天堂亚洲免费视频| 成人午夜影视全部免费看| 无人视频在线观看免费播放影院 | 免费在线看污视频| 久久久WWW成人免费精品| 午夜免费国产体验区免费的| 免费福利在线观看| 黄色网址免费在线| 免费大片av手机看片| 黄色a三级三级三级免费看| 国产亚洲精彩视频| 美女裸免费观看网站| 精品在线视频免费| 日本一区二区三区免费高清在线| 阿v免费在线观看| 一级毛片高清免费播放| 一级做a爱过程免费视| 中文精品人人永久免费| a级日本高清免费看| 99xxoo视频在线永久免费观看| 5g影院5g天天爽永久免费影院| 台湾一级毛片永久免费| 国语成本人片免费av无码| 成人毛片18女人毛片免费|