【问题标题】:performance on iterations in PHPPHP 中的迭代性能
【发布时间】:2012-12-26 12:56:35
【问题描述】:

谁能告诉我这个性能问题

我有 2 个数组, 我需要从这 2 个数组中选择 5 个数字并处理逻辑

第一个数组有 5 个数字,我需要从中选择 3 个数字 第二个数组有 4 个数字,我需要从中选择 2 个数字

所以考虑到这一点 5c3 - 10 和 4c2 - 6 这意味着单个案例需要 60 次迭代

我正在接近的方法是否正确? 这种类型的迭代是否有任何性能问题??

【问题讨论】:

  • 您是否在循环遍历所有组合?那么 60 次迭代是您将拥有的最小次数。
  • 是的,我知道单个用户需要进行 60 次迭代,如果有 4 个用户怎么办,这意味着 4*60 = 240...omg 我只是想确认一下,是这是正确的方法??
  • 还有什么其他方法?无论如何,240 次迭代算不了什么。即使是 10000 次迭代也可能什么都不是。
  • 你说你需要数组 1 中的 3 个数字和数组 2 中的 2 个数字。那么它可以是任何随机数吗?还是您必须生成所有可能的组合。如果它只是随机数,为什么不为数组 1 生成一个随机索引,为数组 2 生成另一个 1 以获得随机数

标签: php performance iteration


【解决方案1】:

如果您必须遍历整个数组并选择数字,那么就没有优化。执行时间取决于数组的大小,这意味着大小越大 - 执行时间越长。

虽然,如果你知道它总是来自两行的 5 个数字,其元素不会改变,那么我认为你可以生成所有可能的有效组合,将它们存储在数据库或文件中,然后返回一个随机的(如果您正在寻找随机选择)。在这种情况下,您将实现一些优化。

【讨论】:

  • Mike,感谢您的回复...这里我需要再次验证这 5 个数字并返回这 5 个数字的排名,以便所有这 60 次可能的迭代都有一个排名,我需要从 60 次迭代中选出最好的排名??
  • 在这种情况下,数据库将满足您的需求。您可以创建一个包含“组合”字段(将存储由逗号分隔的数字)和“排名”字段的表格,然后相应地检索它们。
  • 你如何计算每个 5 个数字组合的排名?如果有模式,您也许可以实现更多优化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 2021-04-29
  • 2022-01-02
  • 2010-10-12
  • 2010-10-29
相关资源
最近更新 更多