posts - 262,  comments - 221,  trackbacks - 0

从 同一个源文件(15M左右)使用不同的方式读入,一种是读入后构造成一个String,另外一个是读入后构造成一个List。然后再调用 writeLines(File, String)和writeLines(File, Collection)写入。下面是测试比较的结果:

Read and write by string format
  File sizes(bytes): 15661680
  Content read(bytes): 15661680
  Time costing(ms) on reading: 2047
  Time costing(ms) on writing: 1016


Read and write by collection format
  File sizes(bytes): 15661680
  File read(lines): 1782615
  Time costing(ms) on reading: 2047
  Time costing(ms) on writing: 533437


效率相差之多! 我的测试环境如下:

OS:Win XP SP4
CPU:Intel Core(TM) 2 Duo CPU
内存:800M(虚拟机分配)
JDK:JDK 5.0 (JVM内存分配:-Xms64m -Xmx512m)
测试文件:15.295M (是一个IP地址文件,总共1782615行)

在读方面时间居然相当(这里面应该有操作系统层面的缓冲作用,我单独地测试时第2个方式总比第一个慢1/3左右)。而在写方面性能简直是天壤之别啊:533437/1016 ≈525倍。

虽然我这个测试还是不严谨的,但是从方法实现过程和原理来看,两者性能差异存在必然的因素:

①以Collection方式去构造的,在读取的过程中生成多个小String,而生成String是一项耗时的工作
②以Collection方式去写的,首先要迭代这个Collection,然后每次调用Collection中的元素的toString()方法,造成多次的堆栈操作





-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2010-03-30 00:19 Paul Lin 阅读(6023) 评论(0)  编辑  收藏 所属分类: J2SE

只有注册用户登录后才能发表评论。


网站导航:
 
<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜