作者BoInE (ine)
看板java
標題[問題] 迴圈第一輪執行的時間
時間Fri Jul 11 16:04:16 2014
各位板友好,我最近在寫一些分析網頁的程式時發現一個現象,想請問可能的原因...
以下是一個範例程式,照順序將各資料夾內的網頁讀入,尚未做任何其它處理
資料夾結構:
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://webptt.com/m.aspx?n=bbs/java/M.1405065860.A.D29.html
1F:推 Killercat:你查看看 HTTP 304 是不是因為這原因 07/11 18:09
2F:→ Killercat:server如果認定你根他拿重複的內容 他就會丟304敷衍你 07/11 18:10
3F:→ Killercat:然後看你的client http library實作會不會幫處理 07/11 18:11
4F:→ Killercat:通常會丟304的server多半會用cookie maintain sessionID 07/11 18:14
5F:→ Killercat:所以第一次比較久是非常正常的 尤其後面都在用304敷衍 07/11 18:15
感謝回答,不過我這支程式沒有使用到網路,讀的都是本機端的檔案而已
我將讀檔關聯的部分拿掉,MyParser改成單純的塞大量字串到Arraylist中
(迴圈每輪都塞一樣的內容/次數),同樣也是第一輪會特別久
※ 編輯: BoInE (140.115.220.116), 07/11/2014 18:21:51
6F:推 lovdkkkk:相同的字串第二輪起應該會重用? string pool 07/11 19:43
8F:推 luoqr:為何不多加一些時間點來看慢在哪一段? 07/11 20:04
9F:→ luoqr:程式允許修改的情況下 也許多加點log會比用猜的有效率一些:P 07/11 20:06
10F:推 AI3767:也許是硬碟或OS的cache 07/12 04:14
11F:推 cowbaying:那是jvm的特性,記得是將常執行的bytecode做hotspot 07/13 12:08
12F:推 kiwatami:給你魚吃不如教你怎麼釣魚 把你懷疑的每一段加入時間戳記 07/13 22:48
13F:→ kiwatami: 最後print出來就一目了然了 07/13 22:48