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的精彩帖子. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |