【问题标题】:PHP Is this more efficient or not worth the bother?PHP 这更有效还是不值得费心?
【发布时间】: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


【解决方案1】:

file_exists() 应该是一个非常便宜的操作。另请注意,file_exists 会构建自己的缓存以帮助提高性能。

见:http://php.net/manual/en/function.file-exists.php

发件人:file_exists() is too slow in PHP. Can anyone suggest a faster alternative?

【讨论】:

  • CJ - 我认为最大的计算成本将来自我 LAN 上的调用次数,但我应该测试 - 尽管我确信你在最严格的意义上是正确的 - 编写std 函数肯定使它们比我写的更有效.. 因此我的 ?'s
猜你喜欢
  • 2011-07-03
  • 2010-11-21
  • 2012-08-19
  • 1970-01-01
  • 2017-11-19
  • 2010-10-24
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多