论坛首页 编程语言技术论坛

为什么我的render速度如此之慢?

浏览 3822 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-10-10  
直接在action中返回render :text => "hello",并且action实现为空
需耗0.1秒
在action中只有一个语句 @count = User.count, 且
render :text => "hello"
需耗0.2秒
如果正常render,rhtml里复用一个partial,共有10条记录,则需要耗时3-5秒,在production和linux环境下可以降低到2-3秒
如果针对partial进行cache,那么可以降低到1.2秒
rhtml里的语句非常简单:
<% @users.collect do %>
<%= render :partial => 'user' %>   
<% end %>
这是怎么回事呢?首先按照常理来说,如果action为空并且只render :text,那么这将是最快的,至少要达到几百个并发,可是我的系统只有10个并发,并且在windows和linux环境下均如此。
比较困惑,还有可能是什么原因造成render速度过慢呢?
需要指出的是:
依照
http://weblog.rubyonrails.com/2006/10/2/who-wants-faster-erb-rendering-for-free
已经对rhtml中的url_for 做了优化,甚至将所有的url_for 都替换成controller/action/id的直接形式,render速度提高非常微小。

   发表时间:2006-10-10  
找到一个重要原因,原来在application.rb中加了一条
before_filter :validate_login
另外还发现一个规律,在action中执行一次SQL查询,哪怕是很简单的,在windows下的development环境下将有0.1s的时间损耗,production下会好一些
0 请登录后投票
   发表时间:2006-10-10  
你这个太不寻常了,一般不查询数据库,很容易达到1000req/s吧。
0 请登录后投票
   发表时间:2006-10-10  
你的用时是怎么测的啊?
你是不是用的Webrick,它很慢的。
0 请登录后投票
   发表时间:2006-10-10  
<% @users.collect do %> 
<%= render :partial => 'user' %> 
<% end %>


这段可以这么写:
<%= render :partial => 'user', :collection => @users %>
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics