看板 java 關於我們 聯絡資訊
各位板友好,我最近在寫一些分析網頁的程式時發現一個現象,想請問可能的原因... 以下是一個範例程式,照順序將各資料夾內的網頁讀入,尚未做任何其它處理 資料夾結構: input --A --1.html --2.html --3.html --B --1.html --2.html --3.html 以此類推 Test 照資料夾A, B..順序執行loop,同時記錄每一輪所需的時間 http://pastebin.com/4C41ZQWd MyParser 將各網頁parse後放入arraylist http://pastebin.com/QuXN7GbJ 實際執行後發現Test中的loop第一輪總是需要特別長的時間(數倍甚至更多) 同樣的內容(A, B...資料夾內都放相同的網頁),在第一輪也同樣花費較長時間.. 想請問會造成這種情況的可能原因? 感謝!!! -- 我自己猜是不是第一輪配置的(使用到的)的記憶體在第二輪之後會被系統再利用, 所以可能省去這些時間...即使是每一輪都重新new一個MyParser也一樣? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.220.116 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1405065860.A.D29.html
Killercat:你查看看 HTTP 304 是不是因為這原因 07/11 18:09
Killercat:server如果認定你根他拿重複的內容 他就會丟304敷衍你 07/11 18:10
Killercat:然後看你的client http library實作會不會幫處理 07/11 18:11
Killercat:通常會丟304的server多半會用cookie maintain sessionID 07/11 18:14
Killercat:所以第一次比較久是非常正常的 尤其後面都在用304敷衍 07/11 18:15
感謝回答,不過我這支程式沒有使用到網路,讀的都是本機端的檔案而已 我將讀檔關聯的部分拿掉,MyParser改成單純的塞大量字串到Arraylist中 (迴圈每輪都塞一樣的內容/次數),同樣也是第一輪會特別久 ※ 編輯: BoInE (140.115.220.116), 07/11/2014 18:21:51
lovdkkkk:相同的字串第二輪起應該會重用? string pool 07/11 19:43
lovdkkkk:附 良葛格 http://ppt.cc/88NW 07/11 19:44
luoqr:為何不多加一些時間點來看慢在哪一段? 07/11 20:04
luoqr:程式允許修改的情況下 也許多加點log會比用猜的有效率一些:P 07/11 20:06
AI3767:也許是硬碟或OS的cache 07/12 04:14
cowbaying:那是jvm的特性,記得是將常執行的bytecode做hotspot 07/13 12:08
kiwatami:給你魚吃不如教你怎麼釣魚 把你懷疑的每一段加入時間戳記 07/13 22:48
kiwatami: 最後print出來就一目了然了 07/13 22:48