Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 on rails 算法在5s内运行,但页面仅在1.5m后加载_Ruby On Rails_Ruby_Performance_Algorithm - Fatal编程技术网

Ruby on rails 算法在5s内运行,但页面仅在1.5m后加载

Ruby on rails 算法在5s内运行,但页面仅在1.5m后加载,ruby-on-rails,ruby,performance,algorithm,Ruby On Rails,Ruby,Performance,Algorithm,我有以下代码: itensshow modelitemget\u tf\u idf\u建议 运行该方法后,我得到以下输出:Time:5.03214sec 但该页面仅在1.5米后呈现,正如您在Google Chrome的跟踪中所看到的: Blocking 0.987 ms DNS Lookup 624.962 ms Connecting 0.412 ms Sending 0.129 ms Waiting 1.5 min // :( Receiving 1.441 ms 最糟糕的是,我无

我有以下代码:

itensshow

modelitemget\u tf\u idf\u建议

运行该方法后,我得到以下输出:Time:5.03214sec

但该页面仅在1.5米后呈现,正如您在Google Chrome的跟踪中所看到的:

Blocking    0.987 ms
DNS Lookup  624.962 ms
Connecting  0.412 ms
Sending 0.129 ms
Waiting 1.5 min // :(
Receiving 1.441 ms
最糟糕的是,我无法理解为什么代码在5秒内运行,而页面只在1.5米后呈现。我知道的唯一提示是,如果我注释掉这部分代码,它会立即运行

    Item.all.includes(:generos).each do |item|
        aux = Array.new 
        item.generos.each do |genero| 
          aux << genero.id
        end
        data << aux
    end

你的项目表有多大,有多少条记录?我在代码中也看到了很多N+1查询问题。您还可以显示您的itens/show.html.erb吗?渲染需要很长时间,也许你在那里做错了什么。我想我终于明白了!我有这个表结构| itens | 1-n |概括| n-1 | genders |。Item.all.size=1752 Generalization.all.size=4050 Gender.all.size=43我最大的错误是在这行项目中。all.includes:genders为了获得性别id,进行了大量连接并减慢了算法,我将其更改为Item.all.includes:generalizations,进程现在在12秒内运行,这不是很好,但它是一个进步!
def similaridade_com(tf_idf,item)

  my_terms = tf_idf[self.id - 1]
  itens_terms = tf_idf[item.id - 1]

  soma = 0.0

  my_terms.each do |k, v|
    soma += v.to_f * itens_terms[k].to_f
  end

  sim = soma / itens_terms.size

  sim.nan? ? 0 : sim

end
...
Rendered itens/_avaliacoes.html.erb (3.7ms)
Rendered itens/_content_recommendation.html.erb (1.3ms)
Rendered itens/show.html.erb within layouts/application (693.6ms)
Rendered layouts/_header.html.erb (5.1ms)
Rendered layouts/_footer.html.erb (0.4ms)
Completed 200 OK in 6396ms (Views: 1194.7ms | ActiveRecord: 61.7ms | Solr: 0.0ms)
Blocking    0.987 ms
DNS Lookup  624.962 ms
Connecting  0.412 ms
Sending 0.129 ms
Waiting 1.5 min // :(
Receiving 1.441 ms
    Item.all.includes(:generos).each do |item|
        aux = Array.new 
        item.generos.each do |genero| 
          aux << genero.id
        end
        data << aux
    end