w*****g 发帖数: 1415 | 1 我用arraylist读取大约120个纯文本文件中的数据,大概320,000 entries,takes
about 9
minutes.
每次启动程序都要等9分钟到10分钟,很烦人。有没有办法,保存这个arraylist对象,
免得每次启动
程序都要等9分钟? |
g*****g 发帖数: 34805 | 2 本地读写通常够快了,初始化ArrayList基本也不花时间。
可以考虑初始化的时候设定足够的大小,尽量别resize。
另外可以多线程读。一秒钟最少也是读几十M,32万entries
不应该9分钟。
【在 w*****g 的大作中提到】 : 我用arraylist读取大约120个纯文本文件中的数据,大概320,000 entries,takes : about 9 : minutes. : 每次启动程序都要等9分钟到10分钟,很烦人。有没有办法,保存这个arraylist对象, : 免得每次启动 : 程序都要等9分钟?
|
w*****g 发帖数: 1415 | 3 多谢了,我用预设size来试试。
【在 g*****g 的大作中提到】 : 本地读写通常够快了,初始化ArrayList基本也不花时间。 : 可以考虑初始化的时候设定足够的大小,尽量别resize。 : 另外可以多线程读。一秒钟最少也是读几十M,32万entries : 不应该9分钟。
|
g*****g 发帖数: 34805 | 4 还有最常见的问题是没有Buffer读数据,导致每一个数据读一次
文件。
【在 w*****g 的大作中提到】 : 多谢了,我用预设size来试试。
|
c*****h 发帖数: 166 | 5 一块磁盘的话 多线程读反而会慢吧
【在 g*****g 的大作中提到】 : 本地读写通常够快了,初始化ArrayList基本也不花时间。 : 可以考虑初始化的时候设定足够的大小,尽量别resize。 : 另外可以多线程读。一秒钟最少也是读几十M,32万entries : 不应该9分钟。
|
e********3 发帖数: 18578 | 6 一块硬盘上的IO多线程根本就是帮倒忙,又不是多核的CPU.
【在 c*****h 的大作中提到】 : 一块磁盘的话 多线程读反而会慢吧
|
e********3 发帖数: 18578 | 7 如果知道文件大小直接用Array, ArrayList要无数次的resize,肯定慢呀。
【在 w*****g 的大作中提到】 : 我用arraylist读取大约120个纯文本文件中的数据,大概320,000 entries,takes : about 9 : minutes. : 每次启动程序都要等9分钟到10分钟,很烦人。有没有办法,保存这个arraylist对象, : 免得每次启动 : 程序都要等9分钟?
|
e********3 发帖数: 18578 | 8 IO Chain里面最外面是BufferedReader,这个是常识吧...
【在 g*****g 的大作中提到】 : 还有最常见的问题是没有Buffer读数据,导致每一个数据读一次 : 文件。
|
b******y 发帖数: 9224 | |
x*****p 发帖数: 1707 | 10 BufferedReader is the solution. |