【发布时间】:2012-10-16 00:47:54
【问题描述】:
我需要将已处理的网络文件共享列表(保留完整的 UNC 路径)存储在内存中,以便不再处理这些文件夹。
我本来打算使用数组,但现在我认为哈希表可能是一个更快的选择。如果该文件夹路径(字符串值)已经存在,我将需要检查几个地方。
什么是最快(检查该值是否存在)和更少内存消耗的选项?
- 将文件夹路径存储在带有 key=folder 路径和空值的哈希表中
- 将文件夹路径存储在一维数组中
- 别的东西
更新: 我只是通过生成 50000 个字符串并进行 3 次查找来运行一些测试,就像在下面指出的那个线程中一样。我还研究了内存消耗,HashSet 是赢家。 HashTable 仍然是一个不错的选择,但 Array 是最糟糕的选择。
数组 - 创建 125048 毫秒,查找 37 毫秒,RAM 中 18Mb
哈希 - 创建 2167 毫秒,查找 0.74 毫秒,RAM 中 2.4Mb
HashSet - 1966 毫秒创建,0.02 毫秒查找,1.4Mb 在 RAM 中
【问题讨论】:
-
您希望您的列表有多大?
-
轻松上万个文件夹
-
您的路径是在文本文件中还是来自其他地方?
-
我首先构建文件夹列表作为脚本的一部分
标签: arrays list powershell hashtable sorted