@release = Release.find(params[:id])
@[email protected]
@release_cycles=Cycle.find_by_sql("select * from cycles where release_id=#{params[:id]}")
current_page=params[:page]?Integer(params[:page]):1
@release_cycles = @release_cycles.paginate(:page=>params[:page],:per_page=>5)
[email protected]
puts "params[releases==]==#{params[:releases]}"
releases=params[:releases].to_i
release1=(releases>0)?Release.find(params[:releases]):nil
puts "release1==#{release1}"
@non_ics=(release1!=nil)?(release1.ics):Ic.active
@non_members=[]
@non_ics.each do |non_ic|
check=1
release_ics.each do |release_ic|
if non_ic==release_ic
check=0
puts "inside ics comparison if"
end
end
if check==1
puts "inside if ! in release_only"
@non_members << non_ic
puts "@ics==#{@non_members}"
end
end
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @release }
end
end
的代码在结束注释的块是吃了运行时如狂(约需20-30秒加载)我我想我如何优化这个想法,但我想第三个人想到如何优化代码,使其更快地运行
这是一个非常长的例子。有没有什么方法可以将此重构为一个最小的失败示例,它仍然说明了相同的行为? – 2012-03-02 03:23:56
它实际上是缓慢的块还是块建立了后来传递给搜索函数的@ non_members数组(可能因索引缺失而变慢)? '@ non_ics'和'release_ics'有多大,你能基准测试这个循环需要多长时间吗? (即使只是't0 = Time.now'在顶部,'puts'#{Time.now - t0} s“'在这个块的底部就足够了) – 2012-03-02 03:57:41