目录查找速度与格式化文件名查找速度

Speed of directory look-up vs. formatted filename look-up

我已经和我的同事多次讨论过这个问题,我 99.9% 确定我是正确的,但他们一直坚持认为他们是正确的,我开始怀疑是否我是疯子

我们正在上传从用户的移动设备拍摄的图片,如果有足够的时间,他们可以累计上传数千张图片。这些照片中的每一张都属于一个"work orders",它们被赋予了一个连续的整数。我们希望针对 retrieval(基于工单)进行优化而不是写入。我们也在 Windows 机器上。

我建议的存储方式是这样的:

Images
|-- 23875
|    |-- f0347b8.png
|    |-- b04675b.png
|-- 28765
     |-- aab658c.png

他们建议的存储方法如下所示:

Images
|-- 23875_f0347b8.png
|-- 23875_b04675b.png
|-- 28765_aab658c.png

对我来说,为了收集工作订单 23875 的 2 个图像,我会查看目录 Images/23875 并获取所有 .png 文件。

为了让他们做同样的事情,他们会遍历所有文件并运行对所有文件名使用通配符过滤器,影响23875_*.png

我相信我的方法更优越,因为在有数千张图像的情况下,它不需要 运行 对可能有数千个不相关文件的通配符过滤器。我问过为什么他们认为他们的方法更优越,但我没有得到令人信服的答案。

如有任何建议,我们将不胜感激。

这个方法

Images
|-- 23875_f0347b8.png
|-- 23875_b04675b.png
|-- 28765_aab658c.png

需要遍历 Images 中的每个文件,以找到与 23875_* 匹配的所有文件。每次您想找到它们。一遍又一遍。直到世界尽头,星辰黯淡。

将所有文件放在一个目录中会丢弃创建文件时拥有的信息,从而使将来更难找到文件。尝试在文件名中对该信息进行编码意味着数据与所有其他类似数据混合在一起,因此需要在将来过滤掉。

为什么?你是对的 - 这没有任何意义。它无缘无故地将信息扔进垃圾箱。

你的方法

Images
|-- 23875
|    |-- f0347b8.png
|    |-- b04675b.png
|-- 28765
     |-- aab658c.png

已经将文件划分为所需的关联。无需过滤或搜索即可找到文件。

they have been insisting that they are correct

太好了。也许他们喜欢这种摔跤...