`
hellosoft
  • 浏览: 55209 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Railsbench : rails的测速工具

阅读更多
笔者刚开始看Railsbench,试了一下之后,觉得是一个不错的工具,共享自己的感受,如有不妥之处,敬请指正。
Railsbench是一款专门用于rails的测试工具。笔者在进行代码优化的时候,发现了它,通过它,可以很清楚的了解到更改代码之后,对相应页面都有些什么样的变化,到底是快了还是慢了。

1. 安装Railsbench
# gem install railsbench
# gem install gruff
# gem install rmagick

2. 配置环境
假定我们的rails应用程序根路径是/var/Rails/myapp
1)  拷贝myapp: cp -r /var/Rails/myapp /tmp/myapp_old
2) 配置myapp
   # cd /var/rails/myapp
   # export RAILS_ROOT=/var/Rails/myapp
   # railsbench install
这将会创建以下几个文件:
$RAILS_ROOT/config/benchmarks.rb
$RAILS_ROOT/config/benchmarks.yml
$RAILS_ROOT/config/environments/benchmarking.rb
然后更改配置文件 benchmarks.yml
	default:
	   sku
	sku:
	   edit,expert_search
	edit:
	   uri: /sku/edit/a07010200ux0001
	   new_session: yes
	   session_data:
	     user_id: <%= User.find_by_username('admin').id %>
	expert_search:
	   uri: /sku/expert_search
	   new_session: yes
	   session_data:
	     user_id: <%= User.find_by_username('admin').id %>

  好了,现在我们就可以开始生成 性能测试文件了
# railsbench perf_run 100 "-bm=default -log" myapp_new
生成的测试文件一般是:
/root/02-26.default.myapp_new.txt
( 其实是在$HOME下,如果你是root,那么就在/root下,在这里我们假定都是root登录,
  02-26是今天的日期
  命令行中的100表示重复次数,这个越大那么测试的结果就相对越稳定。当然需要的时间也越多。
  )

3) 另外开启一个终端,配置myapp_old
   # cd /tmp/myapp_old
   # export RAILS_ROOT=/tmp/myapp_old
   # railsbench install
   ...
   #railsbench perf_run 100 "-bm=default -log" myapp_old
   生成的文件:
/root/02-26.default.myapp_old.txt

好了准备工作完成了,下面就开始正常动作了。

3. 开始编码并测试
   1) 我们在myapp下更改我们的代码,例如笔者使用quick_url_for替换系统默认的url_for,由于quick_url_for没有route所有路径,那么应该会比以前的快。而且,笔者更改的edit,没有更改expert_search.
   2)更改完毕之后,运行测试脚本,如果没有问题,就可以开始railsbench的测试了。
   3)在myapp的终端中,
   # cd /var/Rails/myapp
   # railsbench perf_run 100 "-bm=default -log" myapp_new
   在myapp_old的终端中,
   # cd /tmp/myapp_old
   # railsbench perf_run 100 "-bm=default -log" myapp_old
   然后比较
   # railsbench perf_comp 02-26.default.myapp_old.txt 02-26.default.myapp_new.txt | railsbench perf_html > /root/Desktop/tt.html
   打开你的浏览器,输入: file:///root/Desktop/tt.html 就可以看到结果了。
   结果中的最后一项c1/c2
   你会发现edit那一行的 与 expert_search那一行 也许会不一样
   expert_search那一行应该接近1(由于系统有是快有时慢不一定等于1),而edit那一行就一般会有变化,或者小或者大,这就要根据你更改后代码的执行效率而定了。

在完成以上步骤之后,就可以一边更改你的代码一边查看你更改之后,速度是否有变化了。
但是,笔者在使用的时候,发现,每次生成结果比较麻烦,于是乎,就自己写了一个shell脚本批处理,生成相应的结果html


# shell script:
app1=/tmp/myapp_old
app2=/var/Rails/myapp
times=100
date=`date +%m-%d`

cd $app1
railsbench perf_run $times "-bm=default -log" app1
cd $app2
railsbench perf_run $times "-bm=default -log" app2
railsbench perf_comp /root/$date.default.app1.txt /root/$date.default.app2.txt | railsbench perf_html > /root/Desktop/tt.html



参考:
http://english.zhuaxia.com/item/375014371

环境:Rails1.2.6, ruby1.8.6, centos 5, mysql5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics