Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何判断是什么导致迭代搜索速度减慢?_Ruby_Search_Iteration - Fatal编程技术网

Ruby 如何判断是什么导致迭代搜索速度减慢?

Ruby 如何判断是什么导致迭代搜索速度减慢?,ruby,search,iteration,Ruby,Search,Iteration,我有一个-,它在几万次迭代后会变慢 总结: 从每个相邻点搜索最佳点 选择该点作为新点 如果该点是一个死胡同(即,每个相邻点都离期望结果更远),那么它会将该点添加到“禁止点”的散列中,以不再使用 该算法删除最近的点,并移回点n-1 告诉这些迭代何时以及如何减慢的最好方法是什么?我正在考虑类似于“圈时”基准测试的东西,它可以让我绘制代码中哪些部分的成本在增加 从Array#include?切换到Hash#has#u key?已经将整个过程提高了许多数量级。但是随着被禁分数的列表越来越长,Hash

我有一个-,它在几万次迭代后会变慢

总结:

  • 从每个相邻点搜索最佳点
  • 选择该点作为新点
  • 如果该点是一个死胡同(即,每个相邻点都离期望结果更远),那么它会将该点添加到“禁止点”的散列中,以不再使用
  • 该算法删除最近的点,并移回点n-1
告诉这些迭代何时以及如何减慢的最好方法是什么?我正在考虑类似于“圈时”基准测试的东西,它可以让我绘制代码中哪些部分的成本在增加

Array#include?
切换到
Hash#has#u key?
已经将整个过程提高了许多数量级。但是随着被禁分数的列表越来越长,
Hash\has\u key?
会开始延迟吗?在什么情况下我可以看到显著的减速

被禁止的_点
散列
只是由
{“string rep.of array”=>1}
组成,因为我只使用它来搜索键


感谢您的帮助。

请查看ruby prof()以分析您的代码。在没有分析工具的情况下调查性能问题是浪费时间。散列查找永远不会延迟(据我所知有限)