【发布时间】:2013-11-12 21:54:18
【问题描述】:
我们有大约 20000 个文件夹存储在我们的 LAN 中的主文件夹中,我将其称为“文件夹”,这些文件夹在名为 1000-1999、2000-2999 等的文件夹中细分为 1000 个组...如果存在文件夹 - 比如说5416,我想返回一个链接。
我的问题是:
原来我是在“文件夹”中的项目中旋转,如果它们是目录,我会分解当前文件夹名称以获得下限和上限,比较我正在搜索的文件夹(5416)是否在上限和当前文件夹的下限,并检查其中是否存在 5416。
我没有遇到任何性能问题,但我突然想到,可能爆炸字符串并进行比较比仅使用 PHP 的 file_exists 的计算成本更高。
想法?
【问题讨论】:
-
如果我处于你的位置,我会整理一个快速基准测试,看看结果如何。我的直觉告诉我差异会很小。
-
先做好,后做好,再做好。但它有一个成本:时间。
-
如果文件夹都与命名一致,将
5416中的416替换为000可能会更快(只需转换为整数并减去@987654325即可) @),转换回字符串并附加-5999,然后将每个文件夹的名称与该值进行比较。类似于$folderToFind = '5416'; $tmp = intval($folderToFind); $tmp = $tmp - ($tmp % 1000); $bounds = ''.$tmp.'-'.($tmp + 999); -
您可以通过使用此问题中提到的方法之一来计算哪个选项更快:stackoverflow.com/questions/21133/…
-
感谢 cmets/answers。迈克,我应该运行一个基准测试,虽然我是新手,并且怀疑我的基准测试本身会污染结果。最坏情况之前/之后的时间戳 - 文件夹 = 20000+ 搜索? jonh - 我明白你在说什么,但不认为你的建议会显着改善事情,除非一切都在 RAM 中。
标签: php explode file-exists