[問題] 迴圈第一輪執行的時間

看板java作者 (ine)時間11年前 (2014/07/11 16:04), 11年前編輯推噓6(607)
留言13則, 6人參與, 最新討論串1/1
各位板友好,我最近在寫一些分析網頁的程式時發現一個現象,想請問可能的原因... 以下是一個範例程式,照順序將各資料夾內的網頁讀入,尚未做任何其它處理 資料夾結構: 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

07/11 18:09, , 1F
你查看看 HTTP 304 是不是因為這原因
07/11 18:09, 1F

07/11 18:10, , 2F
server如果認定你根他拿重複的內容 他就會丟304敷衍你
07/11 18:10, 2F

07/11 18:11, , 3F
然後看你的client http library實作會不會幫處理
07/11 18:11, 3F

07/11 18:14, , 4F
通常會丟304的server多半會用cookie maintain sessionID
07/11 18:14, 4F

07/11 18:15, , 5F
所以第一次比較久是非常正常的 尤其後面都在用304敷衍
07/11 18:15, 5F
感謝回答,不過我這支程式沒有使用到網路,讀的都是本機端的檔案而已 我將讀檔關聯的部分拿掉,MyParser改成單純的塞大量字串到Arraylist中 (迴圈每輪都塞一樣的內容/次數),同樣也是第一輪會特別久 ※ 編輯: BoInE (140.115.220.116), 07/11/2014 18:21:51

07/11 19:43, , 6F
相同的字串第二輪起應該會重用? string pool
07/11 19:43, 6F

07/11 19:44, , 7F
附 良葛格 http://ppt.cc/88NW
07/11 19:44, 7F

07/11 20:04, , 8F
為何不多加一些時間點來看慢在哪一段?
07/11 20:04, 8F

07/11 20:06, , 9F
程式允許修改的情況下 也許多加點log會比用猜的有效率一些:P
07/11 20:06, 9F

07/12 04:14, , 10F
也許是硬碟或OS的cache
07/12 04:14, 10F

07/13 12:08, , 11F
那是jvm的特性,記得是將常執行的bytecode做hotspot
07/13 12:08, 11F

07/13 22:48, , 12F
給你魚吃不如教你怎麼釣魚 把你懷疑的每一段加入時間戳記
07/13 22:48, 12F

07/13 22:48, , 13F
最後print出來就一目了然了
07/13 22:48, 13F
文章代碼(AID): #1Jlvg4qf (java)
文章代碼(AID): #1Jlvg4qf (java)