加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails partials渲染有10倍的尖峰渲染时间

发布时间:2020-12-17 03:16:04 所属栏目:百科 来源:网络整理
导读:看 ruby mini-profiler输出我注意到这个5-6部分模式在每个约6-7毫秒渲染,然后一个渲染在关闭60-70毫秒.我想知道是什么会导致这种情况,它看起来像是某种潮红.视图渲染开始时加载所有模型数据,所以我知道不是由延迟加载引起的. Rendering: application/_row 7.
看 ruby mini-profiler输出我注意到这个5-6部分模式在每个约6-7毫秒渲染,然后一个渲染在关闭60-70毫秒.我想知道是什么会导致这种情况,它看起来像是某种潮红.视图渲染开始时加载所有模型数据,所以我知道不是由延迟加载引起的.

Rendering: application/_row     7.1    +1107.0 
 Rendering: application/_row     68.7   +1115.0 
 Rendering: application/_row     6.7    +1184.0 
 ...     
 Rendering: application/_row     6.5    +1234.0 
 Rendering: application/_row     65.2   +1241.0 
 Rendering: application/_row     6.6    +1306.0 
 ...     
 Rendering: application/_row     6.6    +1321.0 
 Rendering: application/_row     66.6   +1328.0 
 Rendering: application/_row     6.6    +1395.0 
 ...     
 Rendering: application/_row     6.6    +1444.0 
 Rendering: application/_row     65.4   +1451.0

Ruby 1.9.3p194,Rails 3.2.11

解决方法

这是最确定的MRI的垃圾收集器刷内存.我使用简单的Rails应用程序和部分测试进行了一些测试:

100.times{Test.new}

我能像你一样看到尖峰:

Rendered tests/_row.html.erb (3.9ms)
Rendered tests/_row.html.erb (45.3ms)
Rendered tests/_row.html.erb (5.2ms)
...
Rendered tests/_row.html.erb (42.8ms)

使用mini-profiler,可以很容易地检查GC调用的次数,更重要的是,它运行了多长时间.对我来说,这些数字非常匹配.如果有10个峰值,那么还有10个(/ -1)GC调用,并且GC的运行时间恰好是正常渲染和花费更长时间的渲染之间的差异.

要使用迷你探查器的GC计时器,请将?pp = profile-gc-time附加到您的URL.还有一篇关于tuning Ruby的精彩帖子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读