最好随时打开多个文件或一次打开所有文件

时间:2011-01-08 10:02:53

标签: vb.net memory

Windows Form Application vb net

我在硬盘上有很多容器文件,里面有很多图像。我必须通过使用ID来获取特定图像,我必须通过每个容器文件并找到其中包含ID的那个,然后我可以检索图像。

我想我有3个选择:

  • 将启动时的所有图像加载到内存中,可能会或可能不会使用某些图像。
  • 因为我需要每个图像遍历所有容器文件并将图像打开到内存中。
  • 创建一个ID字典及其在启动时所处的文件,然后根据需要获取每个图像,而无需浏览所有容器文件。

哪个选项更好,因为请求图像的用户与显示的图像之间的延迟较小,但是没有使用太多内存或者计算机速度慢?

(使用此应用程序的用户的平均计算机内存约为(2-)3-4GB

2 个答案:

答案 0 :(得分:1)

与容器文件相关的图像位置是否随时间而变化?如果没有,一个选项是进行一次性操作,该操作将索引文件并将此信息写入单独的文件中。可以在启动时加载此索引文件,然后您的代码将知道在哪个容器中查找特定图像。

答案 1 :(得分:0)

用户计算机上的内存量并不重要 - 这个内存不是你的,而是决定如何处理内存的用户。您的任务是在消耗的内存(尽量保持最小化)和操作速度之间找到适当的平衡。

选择取决于容器的数量和每个容器中的图像数量。

如果数量很小,请将所有内容加载到内存中,不要打扰。

当容器和​​文件的数量未知时,

ID字典是首选的“通用”方式。

还有一件事需要考虑 - 如何生成和存储ID?例如,如果容器名为AA到ZZ且图像ID是数字,那么您可以将引用存储为“BS123”,当您需要图像时,它将告诉您打开容器BS并拍摄图像123.