我正在编写一个从Web服务下载文件的应用程序.
文件下载方式如下:
我用来保存FileDescriptor列表的集合是LinkedList.但是,对于每组文件,我将创建一个全新的LinkedList来保存它们的FileDescriptors.Psudocode是这样的:
do {
List<FileDescriptor> list = new LinkedList<FileDescriptor>();
GroupOfFiles group = webService.getGroupOfFiles();
Iterator<File> itr = group.iterator();
while(itr.hasNext) {
list.add(new(FileDescriptor(itr.next()));
}
<My Business Logic here>
} while(group.hasMoreGroups());
Run Code Online (Sandbox Code Playgroud)
可以看出,每次检索到一组新文件时,我都会创建一个新的LinkedList.处理完文件组后,不再需要LinkedList.我无法创建一个列表并重复使用它,因为每个组可以包含的最大数量是未知的.
如果我使用这样的代码并且有数百万个文件,例如,每个组最多只能有1000个文件,最终会有很多LinkedList(及其元素)作为Garbage.这件好事吗?我相信在这种情况下会有更好的方法来处理它.
请提出你的意见.
非常感谢.
与下载数百万个文件相比,创建1000个LinkedList对象(并对其进行垃圾收集)的成本可以忽略不计.我们谈论的是1毫秒与小时数.有些米与地球到月球的距离.
您正在进行预优化,并且通常情况下,在进行预优化时,您会在错误的位置进行优化.
也就是说,列表是动态大小的数据结构,您无需知道其最大大小即可重用它.它会动态增长:
List<FileDescriptor> list = new LinkedList<FileDescriptor>();
do {
list.clear(); // remove everything from the list
...
}
while (...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |