0

我有一个关于 gist 的迭代搜索算法—— (或在此处查看完整的 github 存储库) ——在数万次迭代后会变慢。

概括:

  • 从每个相邻点搜索最佳点
  • 选择该点作为新点
  • 如果该点是死胡同(即,每个相邻点都离期望的结果更远),那么它将该点添加到“禁止点”的哈希中以不再使用
  • 该算法删除最近的点,并返回到点 n - 1

判断这些迭代何时以及如何变慢的最佳方法是什么?我正在考虑类似于“单圈时间”基准的东西,它可以让我绘制出我的代码的哪些部分正在增加成本。

从 切换Array#include?Hash#has_key?已经将整个事情加快了许多数量级。但是随着禁用点的列表越来越长,会Hash#has_key?开始滞后吗?我可以期待看到显着放缓的点是什么?

被禁止Hash的点只是由 组成{"string rep. of array" => 1},因为我只是用它来搜索密钥。

谢谢你的帮助。

4

0 回答 0