2013-12-12 29 views
3

我加入了bullet gem在开发中告知我任何N + 1个查询的渴望加入后负荷(滑轨4.0.2) 它建议的模型的急切装载两家母公司协会在那里我展示所有的记录。Rails的子弹宝石更慢建议

预先加载之前的其中一个属于对协会:

Completed 200 OK in 5252ms (Views: 1.8ms | ActiveRecord: 114.1ms) 

预先加载后:

Completed 200 OK in 6741ms (Views: 2.1ms | ActiveRecord: 146.0ms) 

此外,通过预先加载,控制台说完成,并没有按后浏览器挂起” t更新为一个年龄(约6秒)。服务器生产没有这个冻结的问题,但仍然看起来在这种情况下,急切的加载是不好的建议。

是否有意义的是预先加载速度可能很慢?该视图不会访问(急切加载的)父记录。

而且子弹宝石不显示某些原因调用堆栈。

回答

3

另外,在加载过程中,浏览器挂起后控制台说完成并且不会更新一个年龄(大约6秒)。

正如我今天发现的那样,它可能是Bullet本身造成的。究其原因,是因为它插入其中要经过和分析您的查询之前的浏览器可以接收该页面的中间件。所以可以想象,你的查询的任何变化可能会影响子弹的速度。

通过我的应用程序中的一个取出子弹,我得到了我的网页速度慢去掉一个额外的延迟,同时还降低了实际的报告一整秒渲染时间。

所以,当你做你的比较,包括子弹做禁用(无论是在配置还是从Gemfile中暂时删除和运行bundle)。它仍然是一个有价值的工具,但显然对于一些应用程序可能是一个好主意,定期,当你试图优化的事情,只启用它。