作者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/cn.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